From 8fc74d0d7b51014a24c9d2dc9442434d91c4e711 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 10 Nov 2020 10:17:49 +0100 Subject: [PATCH] [mod] searx.search: EngineRef, SearchQuery: add __repr__ and __eq__ methods --- searx/search.py | 24 ++++++++++++++++++++---- tests/unit/test_search.py | 14 ++++++++++++++ tests/unit/test_standalone_searx.py | 3 ++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/searx/search.py b/searx/search.py index cd195825a..04c6b2885 100644 --- a/searx/search.py +++ b/searx/search.py @@ -57,8 +57,11 @@ class EngineRef: self.category = category self.from_bang = from_bang - def __str__(self): - return "(" + self.name + "," + self.category + "," + str(self.from_bang) + ")" + def __repr__(self): + return "EngineRef({!r}, {!r}, {!r})".format(self.name, self.category, self.from_bang) + + def __eq__(self, other): + return self.name == other.name and self.category == other.category and self.from_bang == other.from_bang class SearchQuery: @@ -87,8 +90,21 @@ class SearchQuery: self.timeout_limit = timeout_limit self.external_bang = external_bang - def __str__(self): - return self.query + ";" + str(self.engineref_list) + def __repr__(self): + return "SearchQuery({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r})".\ + format(self.query, self.engineref_list, self.categories, self.lang, self.safesearch, + self.pageno, self.time_range, self.timeout_limit, self.external_bang) + + def __eq__(self, other): + return self.query == other.query\ + and self.engineref_list == other.engineref_list\ + and self.categories == self.categories\ + and self.lang == other.lang\ + and self.safesearch == other.safesearch\ + and self.pageno == other.pageno\ + and self.time_range == other.time_range\ + and self.timeout_limit == other.timeout_limit\ + and self.external_bang == other.external_bang def send_http_request(engine, request_params): diff --git a/tests/unit/test_search.py b/tests/unit/test_search.py index 36135913c..464a9b37d 100644 --- a/tests/unit/test_search.py +++ b/tests/unit/test_search.py @@ -21,6 +21,20 @@ TEST_ENGINES = [ ] +class SearchQueryTestCase(SearxTestCase): + + def test_repr(self): + s = SearchQuery('test', [EngineRef('bing', 'general', False)], ['general'], 'all', 0, 1, '1', 5.0, 'g') + self.assertEqual(repr(s), + "SearchQuery('test', [EngineRef('bing', 'general', False)], ['general'], 'all', 0, 1, '1', 5.0, 'g')") # noqa + + def test_eq(self): + s = SearchQuery('test', [EngineRef('bing', 'general', False)], ['general'], 'all', 0, 1, None, None, None) + t = SearchQuery('test', [EngineRef('google', 'general', False)], ['general'], 'all', 0, 1, None, None, None) + self.assertEqual(s, s) + self.assertNotEqual(s, t) + + class SearchTestCase(SearxTestCase): @classmethod diff --git a/tests/unit/test_standalone_searx.py b/tests/unit/test_standalone_searx.py index cd1a14f46..c00f033b6 100644 --- a/tests/unit/test_standalone_searx.py +++ b/tests/unit/test_standalone_searx.py @@ -7,6 +7,7 @@ import sys from mock import Mock, patch from nose2.tools import params +from searx.search import SearchQuery from searx.testing import SearxTestCase @@ -91,7 +92,7 @@ class StandaloneSearx(SearxTestCase): args = sas.parse_argument(['rain', ]) search_q = sas.get_search_query(args) self.assertTrue(search_q) - self.assertEqual(str(search_q), 'rain;[]') + self.assertEqual(search_q, SearchQuery('rain', [], ['general'], 'all', 0, 1, None, None, None)) def test_no_parsed_url(self): """test no_parsed_url func"""