Browse Source

add unit && robot tests

Noemi Vanyi 9 years ago
parent
commit
f0fd9ad628
2 changed files with 209 additions and 0 deletions
  1. 108 0
      tests/robot/test_basic.robot
  2. 101 0
      tests/unit/test_preferences.py

+ 108 - 0
tests/robot/test_basic.robot

@@ -42,3 +42,111 @@ Change language
     Location Should Be  http://localhost:11111/
     Location Should Be  http://localhost:11111/
     Page Should Contain  rólunk
     Page Should Contain  rólunk
     Page Should Contain  beállítások
     Page Should Contain  beállítások
+
+Change method
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    Select From List  method  GET
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  method  GET
+    Select From List  method  POST
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  method  POST
+
+Change theme
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  theme  default
+    Select From List  theme  oscar
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  theme  oscar
+
+Change safesearch
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  safesearch  None
+    Select From List  safesearch  Strict
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  safesearch  Strict
+
+Change image proxy
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  image_proxy  Disabled
+    Select From List  image_proxy  Enabled
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  image_proxy  Enabled
+
+Change search language
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  language  Automatic
+    Select From List  language  Turkish (Turkey) - tr_TR
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  language  Turkish (Turkey) - tr_TR
+
+Change autocomplete
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  autocomplete  -
+    Select From List  autocomplete  google
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  autocomplete  google
+
+Change allowed/disabled engines
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    Page Should Contain  Engine name
+    Element Should Contain  xpath=//label[@class="deny"][@for='engine_dummy_dummy_dummy']  Block
+    Element Should Contain  xpath=//label[@class="deny"][@for='engine_general_general_dummy']  Block
+    Click Element  xpath=//label[@class="deny"][@for='engine_general_general_dummy']
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    Page Should Contain  Engine name
+    Element Should Contain  xpath=//label[@class="deny"][@for='engine_dummy_dummy_dummy']  Block
+    Element Should Contain  xpath=//label[@class="deny"][@for='engine_general_general_dummy']  \
+
+Block a plugin
+    Page Should Contain  about
+    Page Should Contain  preferences
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  theme  default
+    Select From List  theme  oscar
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    List Selection Should Be  theme  oscar
+    Page Should Contain  Plugins
+    Click Link  Plugins
+    Checkbox Should Not Be Selected  id=plugin_HTTPS_rewrite
+    Click Element  xpath=//label[@for='plugin_HTTPS_rewrite']
+    Submit Form  id=search_form
+    Location Should Be  http://localhost:11111/
+    Go To  http://localhost:11111/preferences
+    Page Should Contain  Plugins
+    Click Link  Plugins
+    Checkbox Should Be Selected  id=plugin_HTTPS_rewrite

+ 101 - 0
tests/unit/test_preferences.py

@@ -0,0 +1,101 @@
+from searx.preferences import (EnumStringSetting, MapSetting, MissingArgumentException,
+                               MultipleChoiceSetting, PluginsSetting, ValidationException)
+from searx.testing import SearxTestCase
+
+
+class PluginStub(object):
+    def __init__(self, id, default_on):
+        self.id = id
+        self.default_on = default_on
+
+
+class TestSettings(SearxTestCase):
+    # map settings
+    def test_map_setting_invalid_initialization(self):
+        with self.assertRaises(MissingArgumentException):
+            setting = MapSetting(3, wrong_argument={'0': 0})
+
+    def test_map_setting_invalid_default_value(self):
+        with self.assertRaises(ValidationException):
+            setting = MapSetting(3, map={'dog': 1, 'bat': 2})
+
+    def test_map_setting_invalid_choice(self):
+        setting = MapSetting(2, map={'dog': 1, 'bat': 2})
+        with self.assertRaises(ValidationException):
+            setting.parse('cat')
+
+    def test_map_setting_valid_default(self):
+        setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
+        self.assertEquals(setting.get_value(), 3)
+
+    def test_map_setting_valid_choice(self):
+        setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
+        self.assertEquals(setting.get_value(), 3)
+        setting.parse('bat')
+        self.assertEquals(setting.get_value(), 2)
+
+    def test_enum_setting_invalid_initialization(self):
+        with self.assertRaises(MissingArgumentException):
+            setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
+
+    # enum settings
+    def test_enum_setting_invalid_initialization(self):
+        with self.assertRaises(MissingArgumentException):
+            setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
+
+    def test_enum_setting_invalid_default_value(self):
+        with self.assertRaises(ValidationException):
+            setting = EnumStringSetting(3, choices=[0, 1, 2])
+
+    def test_enum_setting_invalid_choice(self):
+        setting = EnumStringSetting(0, choices=[0, 1, 2])
+        with self.assertRaises(ValidationException):
+            setting.parse(3)
+
+    def test_enum_setting_valid_default(self):
+        setting = EnumStringSetting(3, choices=[1, 2, 3])
+        self.assertEquals(setting.get_value(), 3)
+
+    def test_enum_setting_valid_choice(self):
+        setting = EnumStringSetting(3, choices=[1, 2, 3])
+        self.assertEquals(setting.get_value(), 3)
+        setting.parse(2)
+        self.assertEquals(setting.get_value(), 2)
+
+    # multiple choice settings
+    def test_multiple_setting_invalid_initialization(self):
+        with self.assertRaises(MissingArgumentException):
+            setting = MultipleChoiceSetting(['2'], wrong_argument=['0', '1', '2'])
+
+    def test_multiple_setting_invalid_default_value(self):
+        with self.assertRaises(ValidationException):
+            setting = MultipleChoiceSetting(['3', '4'], choices=['0', '1', '2'])
+
+    def test_multiple_setting_invalid_choice(self):
+        setting = MultipleChoiceSetting(['1', '2'], choices=['0', '1', '2'])
+        with self.assertRaises(ValidationException):
+            setting.parse('4, 3')
+
+    def test_multiple_setting_valid_default(self):
+        setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
+        self.assertEquals(setting.get_value(), ['3'])
+
+    def test_multiple_setting_valid_choice(self):
+        setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
+        self.assertEquals(setting.get_value(), ['3'])
+        setting.parse('2')
+        self.assertEquals(setting.get_value(), ['2'])
+
+    # plugins settings
+    def test_plugins_setting_all_default_enabled(self):
+        plugin1 = PluginStub('plugin1', True)
+        plugin2 = PluginStub('plugin2', True)
+        setting = PluginsSetting(['3'], choices=[plugin1, plugin2])
+        self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin2']))
+
+    def test_plugins_setting_few_default_enabled(self):
+        plugin1 = PluginStub('plugin1', True)
+        plugin2 = PluginStub('plugin2', False)
+        plugin3 = PluginStub('plugin3', True)
+        setting = PluginsSetting('name', choices=[plugin1, plugin2, plugin3])
+        self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin3']))