@@ -0,0 +1,101 @@
1+from searx.preferences import (EnumStringSetting, MapSetting, MissingArgumentException,
2+ MultipleChoiceSetting, PluginsSetting, ValidationException)
3+from searx.testing import SearxTestCase
4+
5+
6+class PluginStub(object):
7+ def __init__(self, id, default_on):
8+ self.id = id
9+ self.default_on = default_on
10+
11+
12+class TestSettings(SearxTestCase):
13+ # map settings
14+ def test_map_setting_invalid_initialization(self):
15+ with self.assertRaises(MissingArgumentException):
16+ setting = MapSetting(3, wrong_argument={'0': 0})
17+
18+ def test_map_setting_invalid_default_value(self):
19+ with self.assertRaises(ValidationException):
20+ setting = MapSetting(3, map={'dog': 1, 'bat': 2})
21+
22+ def test_map_setting_invalid_choice(self):
23+ setting = MapSetting(2, map={'dog': 1, 'bat': 2})
24+ with self.assertRaises(ValidationException):
25+ setting.parse('cat')
26+
27+ def test_map_setting_valid_default(self):
28+ setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
29+ self.assertEquals(setting.get_value(), 3)
30+
31+ def test_map_setting_valid_choice(self):
32+ setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
33+ self.assertEquals(setting.get_value(), 3)
34+ setting.parse('bat')
35+ self.assertEquals(setting.get_value(), 2)
36+
37+ def test_enum_setting_invalid_initialization(self):
38+ with self.assertRaises(MissingArgumentException):
39+ setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
40+
41+ # enum settings
42+ def test_enum_setting_invalid_initialization(self):
43+ with self.assertRaises(MissingArgumentException):
44+ setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
45+
46+ def test_enum_setting_invalid_default_value(self):
47+ with self.assertRaises(ValidationException):
48+ setting = EnumStringSetting(3, choices=[0, 1, 2])
49+
50+ def test_enum_setting_invalid_choice(self):
51+ setting = EnumStringSetting(0, choices=[0, 1, 2])
52+ with self.assertRaises(ValidationException):
53+ setting.parse(3)
54+
55+ def test_enum_setting_valid_default(self):
56+ setting = EnumStringSetting(3, choices=[1, 2, 3])
57+ self.assertEquals(setting.get_value(), 3)
58+
59+ def test_enum_setting_valid_choice(self):
60+ setting = EnumStringSetting(3, choices=[1, 2, 3])
61+ self.assertEquals(setting.get_value(), 3)
62+ setting.parse(2)
63+ self.assertEquals(setting.get_value(), 2)
64+
65+ # multiple choice settings
66+ def test_multiple_setting_invalid_initialization(self):
67+ with self.assertRaises(MissingArgumentException):
68+ setting = MultipleChoiceSetting(['2'], wrong_argument=['0', '1', '2'])
69+
70+ def test_multiple_setting_invalid_default_value(self):
71+ with self.assertRaises(ValidationException):
72+ setting = MultipleChoiceSetting(['3', '4'], choices=['0', '1', '2'])
73+
74+ def test_multiple_setting_invalid_choice(self):
75+ setting = MultipleChoiceSetting(['1', '2'], choices=['0', '1', '2'])
76+ with self.assertRaises(ValidationException):
77+ setting.parse('4, 3')
78+
79+ def test_multiple_setting_valid_default(self):
80+ setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
81+ self.assertEquals(setting.get_value(), ['3'])
82+
83+ def test_multiple_setting_valid_choice(self):
84+ setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
85+ self.assertEquals(setting.get_value(), ['3'])
86+ setting.parse('2')
87+ self.assertEquals(setting.get_value(), ['2'])
88+
89+ # plugins settings
90+ def test_plugins_setting_all_default_enabled(self):
91+ plugin1 = PluginStub('plugin1', True)
92+ plugin2 = PluginStub('plugin2', True)
93+ setting = PluginsSetting(['3'], choices=[plugin1, plugin2])
94+ self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin2']))
95+
96+ def test_plugins_setting_few_default_enabled(self):
97+ plugin1 = PluginStub('plugin1', True)
98+ plugin2 = PluginStub('plugin2', False)
99+ plugin3 = PluginStub('plugin3', True)
100+ setting = PluginsSetting('name', choices=[plugin1, plugin2, plugin3])
101+ self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin3']))