[refactor] plugins: allow setting default enabled state via settings.yml
This commit is contained in:
+18
-12
@@ -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"})
|
||||
|
||||
@@ -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']))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user