[refactor] plugins: allow setting default enabled state via settings.yml

This commit is contained in:
Bnyro
2025-02-05 14:28:24 +01:00
parent 4ab7984edd
commit 37716f47bb
18 changed files with 129 additions and 68 deletions
+18 -12
View File
@@ -47,10 +47,16 @@ def do_post_search(query, storage, **kwargs) -> Mock:
class PluginMock(searx.plugins.Plugin):
def __init__(self, _id: str, name: str, default_on: bool):
def __init__(self, _id: str, name: str, default_enabled: bool = False):
self.id = _id
self.default_on = default_on
self._name = name
self.default_enabled = default_enabled
self.info = searx.plugins.PluginInfo(
id=id,
name=name,
description=f"Dummy plugin: {id}",
preference_section="general",
)
super().__init__()
# pylint: disable= unused-argument
@@ -63,14 +69,6 @@ class PluginMock(searx.plugins.Plugin):
def on_result(self, request, search, result) -> bool:
return False
def info(self):
return searx.plugins.PluginInfo(
id=self.id,
name=self._name,
description=f"Dummy plugin: {self.id}",
preference_section="general",
)
class PluginStorage(SearxTestCase):
@@ -78,9 +76,17 @@ class PluginStorage(SearxTestCase):
super().setUp()
engines = {}
searx.settings['enabled_plugins'] = [
{
'name': 'plg001',
},
{
'name': 'plg002',
},
]
self.storage = searx.plugins.PluginStorage()
self.storage.register(PluginMock("plg001", "first plugin", True))
self.storage.register(PluginMock("plg002", "second plugin", True))
self.storage.register(PluginMock("plg001", "first plugin"))
self.storage.register(PluginMock("plg002", "second plugin"))
self.storage.init(self.app)
self.pref = searx.preferences.Preferences(["simple"], ["general"], engines, self.storage)
self.pref.parse_dict({"locale": "en"})
+17 -10
View File
@@ -115,19 +115,26 @@ class TestSettings(SearxTestCase):
# plugins settings
def test_plugins_setting_all_default_enabled(self):
storage = searx.plugins.PluginStorage()
storage.register(PluginMock("plg001", "first plugin", True))
storage.register(PluginMock("plg002", "second plugin", True))
plgs_settings = PluginsSetting(False, storage)
self.assertEqual(set(plgs_settings.get_enabled()), {"plg001", "plg002"})
def test_plugins_setting_few_default_enabled(self):
searx.settings['enabled_plugins'] = [
{
'name': 'plg001',
},
{
'name': 'plg002',
'default_on': False,
},
{
'name': 'plg003',
'default_on': True,
},
]
storage = searx.plugins.PluginStorage()
storage.register(PluginMock("plg001", "first plugin", True))
storage.register(PluginMock("plg002", "second plugin", False))
storage.register(PluginMock("plg003", "third plugin", True))
storage.register(PluginMock("plg001", "first plugin"))
storage.register(PluginMock("plg002", "second plugin"))
storage.register(PluginMock("plg003", "third plugin"))
plgs_settings = PluginsSetting(False, storage)
self.assertEqual(set(plgs_settings.get_disabled()), set(['plg002']))
self.assertEqual(set(plgs_settings.get_enabled()), set(['plg001', 'plg003']))