summaryrefslogtreecommitdiff
path: root/tests/unit/test_results.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_results.py')
-rw-r--r--tests/unit/test_results.py103
1 files changed, 42 insertions, 61 deletions
diff --git a/tests/unit/test_results.py b/tests/unit/test_results.py
index 740d36a03..6560f7b5c 100644
--- a/tests/unit/test_results.py
+++ b/tests/unit/test_results.py
@@ -1,75 +1,56 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
-# pylint: disable=missing-module-docstring
+# pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-name
+
+from searx.result_types import LegacyResult
from searx.results import ResultContainer
-import searx.search
from tests import SearxTestCase
-def make_test_engine_dict(**kwargs) -> dict:
- test_engine = {
- # fmt: off
- 'name': None,
- 'engine': None,
- 'categories': 'general',
- 'shortcut': 'dummy',
- 'timeout': 3.0,
- 'tokens': [],
- # fmt: on
- }
-
- test_engine.update(**kwargs)
- return test_engine
-
-
-def fake_result(url='https://aa.bb/cc?dd=ee#ff', title='aaa', content='bbb', engine='wikipedia', **kwargs):
- result = {
- # fmt: off
- 'url': url,
- 'title': title,
- 'content': content,
- 'engine': engine,
- # fmt: on
- }
- result.update(kwargs)
- return result
-
-
-class ResultContainerTestCase(SearxTestCase): # pylint: disable=missing-class-docstring
-
- def setUp(self) -> None:
- stract_engine = make_test_engine_dict(name="stract", engine="stract", shortcut="stra")
- duckduckgo_engine = make_test_engine_dict(name="duckduckgo", engine="duckduckgo", shortcut="ddg")
- mojeek_engine = make_test_engine_dict(name="mojeek", engine="mojeek", shortcut="mjk")
- searx.search.initialize([stract_engine, duckduckgo_engine, mojeek_engine])
- self.container = ResultContainer()
+class ResultContainerTestCase(SearxTestCase):
+ # pylint: disable=use-dict-literal
- def tearDown(self):
- searx.search.load_engines([])
+ TEST_SETTINGS = "test_result_container.yml"
def test_empty(self):
- self.assertEqual(self.container.get_ordered_results(), [])
+ container = ResultContainer()
+ self.assertEqual(container.get_ordered_results(), [])
def test_one_result(self):
- self.container.extend('wikipedia', [fake_result()])
+ result = dict(url="https://example.org", title="title ..", content="Lorem ..")
- self.assertEqual(self.container.results_length(), 1)
+ container = ResultContainer()
+ container.extend("google", [result])
+ container.close()
- def test_one_suggestion(self):
- self.container.extend('wikipedia', [fake_result(suggestion=True)])
-
- self.assertEqual(len(self.container.suggestions), 1)
- self.assertEqual(self.container.results_length(), 0)
-
- def test_result_merge(self):
- self.container.extend('wikipedia', [fake_result()])
- self.container.extend('wikidata', [fake_result(), fake_result(url='https://example.com/')])
+ self.assertEqual(container.results_length(), 1)
+ self.assertIn(LegacyResult(result), container.get_ordered_results())
- self.assertEqual(self.container.results_length(), 2)
-
- def test_result_merge_by_title(self):
- self.container.extend('stract', [fake_result(engine='stract', title='short title')])
- self.container.extend('duckduckgo', [fake_result(engine='duckduckgo', title='normal title')])
- self.container.extend('mojeek', [fake_result(engine='mojeek', title='this long long title')])
-
- self.assertEqual(self.container.get_ordered_results()[0].get('title', ''), 'this long long title')
+ def test_one_suggestion(self):
+ result = dict(suggestion="lorem ipsum ..")
+
+ container = ResultContainer()
+ container.extend("duckduckgo", [result])
+ container.close()
+
+ self.assertEqual(container.results_length(), 0)
+ self.assertEqual(len(container.suggestions), 1)
+ self.assertIn(result["suggestion"], container.suggestions)
+
+ def test_merge_url_result(self):
+ # from the merge of eng1 and eng2 we expect this result
+ result = LegacyResult(
+ url="https://example.org", title="very long title, lorem ipsum", content="Lorem ipsum dolor sit amet .."
+ )
+ eng1 = dict(url=result.url, title="short title", content=result.content, engine="google")
+ eng2 = dict(url="http://example.org", title=result.title, content="lorem ipsum", engine="duckduckgo")
+
+ container = ResultContainer()
+ container.extend(None, [eng1, eng2])
+ container.close()
+
+ result_list = container.get_ordered_results()
+ self.assertEqual(container.results_length(), 1)
+ self.assertIn(result, result_list)
+ self.assertEqual(result_list[0].title, result.title)
+ self.assertEqual(result_list[0].content, result.content)