# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-name

from parameterized import parameterized

import searx.plugins
import searx.answerers
import searx.preferences

from searx.extended_types import sxng_request

from tests import SearxTestCase


class AnswererTest(SearxTestCase):

    def setUp(self):
        super().setUp()

        self.storage = searx.plugins.PluginStorage()
        engines = {}
        self.pref = searx.preferences.Preferences(["simple"], ["general"], engines, self.storage)
        self.pref.parse_dict({"locale": "en"})

    @parameterized.expand(searx.answerers.STORAGE.answerer_list)
    def test_unicode_input(self, answerer_obj: searx.answerers.Answerer):

        with self.app.test_request_context():
            sxng_request.preferences = self.pref

            unicode_payload = "árvíztűrő tükörfúrógép"
            for keyword in answerer_obj.keywords:
                query = f"{keyword} {unicode_payload}"
                self.assertIsInstance(answerer_obj.answer(query), list)