diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/test_standalone_searx.py | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/tests/unit/test_standalone_searx.py b/tests/unit/test_standalone_searx.py new file mode 100644 index 000000000..cd1a14f46 --- /dev/null +++ b/tests/unit/test_standalone_searx.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +"""Test utils/standalone_searx.py""" +import datetime +import importlib.util +import sys + +from mock import Mock, patch +from nose2.tools import params + +from searx.testing import SearxTestCase + + +def get_standalone_searx_module(): + """Get standalone_searx module.""" + module_name = 'utils.standalone_searx' + filename = 'utils/standalone_searx.py' + spec = importlib.util.spec_from_file_location(module_name, filename) + sas = importlib.util.module_from_spec(spec) + spec.loader.exec_module(sas) + return sas + + +class StandaloneSearx(SearxTestCase): + """Unit test for standalone_searx.""" + + def test_parse_argument_no_args(self): + """Test parse argument without args.""" + sas = get_standalone_searx_module() + with patch.object(sys, 'argv', ['standalone_searx']), \ + self.assertRaises(SystemExit): + sas.parse_argument() + + def test_parse_argument_basic_args(self): + """Test parse argument with basic args.""" + sas = get_standalone_searx_module() + query = 'red box' + exp_dict = { + 'query': query, 'category': 'general', 'lang': 'all', 'pageno': 1, + 'safesearch': '0', 'timerange': None} + args = ['standalone_searx', query] + with patch.object(sys, 'argv', args): + res = sas.parse_argument() + self.assertEqual(exp_dict, vars(res)) + res2 = sas.parse_argument(args[1:]) + self.assertEqual(exp_dict, vars(res2)) + + def test_to_dict(self): + """test to_dict.""" + sas = get_standalone_searx_module() + self.assertEqual( + sas.to_dict( + sas.get_search_query(sas.parse_argument(['red box']))), + { + 'search': { + 'q': 'red box', 'pageno': 1, 'lang': 'all', + 'safesearch': 0, 'timerange': None + }, + 'results': [], 'infoboxes': [], 'suggestions': [], + 'answers': [], 'paging': False, 'results_number': 0 + } + ) + + def test_to_dict_with_mock(self): + """test to dict.""" + sas = get_standalone_searx_module() + with patch.object(sas.searx.search, 'Search') as mock_s: + m_search = mock_s().search() + m_sq = Mock() + self.assertEqual( + sas.to_dict(m_sq), + { + 'answers': [], + 'infoboxes': m_search.infoboxes, + 'paging': m_search.paging, + 'results': m_search.get_ordered_results(), + 'results_number': m_search.results_number(), + 'search': { + 'lang': m_sq.lang, + 'pageno': m_sq.pageno, + 'q': m_sq.query, + 'safesearch': m_sq.safesearch, + 'timerange': m_sq.time_range, + }, + 'suggestions': [] + } + ) + + def test_get_search_query(self): + """test get_search_query.""" + sas = get_standalone_searx_module() + args = sas.parse_argument(['rain', ]) + search_q = sas.get_search_query(args) + self.assertTrue(search_q) + self.assertEqual(str(search_q), 'rain;[]') + + def test_no_parsed_url(self): + """test no_parsed_url func""" + sas = get_standalone_searx_module() + self.assertEqual( + sas.no_parsed_url([{'parsed_url': 'http://example.com'}]), + [{}] + ) + + @params( + (datetime.datetime(2020, 1, 1), '2020-01-01T00:00:00'), + ('a'.encode('utf8'), 'a'), + (set([1]), [1]) + ) + def test_json_serial(self, arg, exp_res): + """test json_serial func""" + sas = get_standalone_searx_module() + self.assertEqual(sas.json_serial(arg), exp_res) + + def test_json_serial_error(self): + """test error on json_serial.""" + sas = get_standalone_searx_module() + with self.assertRaises(TypeError): + sas.json_serial('a') |