diff options
Diffstat (limited to 'tests/unit/test_results.py')
| -rw-r--r-- | tests/unit/test_results.py | 103 |
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) |