test_plugins.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. # pylint: disable=missing-module-docstring
  3. from mock import Mock
  4. from searx import plugins
  5. from tests import SearxTestCase
  6. def get_search_mock(query, **kwargs):
  7. return Mock(search_query=Mock(query=query, **kwargs), result_container=Mock(answers={}))
  8. class PluginMock: # pylint: disable=missing-class-docstring, too-few-public-methods
  9. default_on = False
  10. name = 'Default plugin'
  11. description = 'Default plugin description'
  12. class PluginStoreTest(SearxTestCase): # pylint: disable=missing-class-docstring
  13. def setUp(self):
  14. self.store = plugins.PluginStore()
  15. def test_init(self):
  16. self.assertEqual(0, len(self.store.plugins))
  17. self.assertIsInstance(self.store.plugins, list)
  18. def test_register(self):
  19. testplugin = PluginMock()
  20. self.store.register(testplugin)
  21. self.assertEqual(1, len(self.store.plugins))
  22. def test_call_empty(self):
  23. testplugin = PluginMock()
  24. self.store.register(testplugin)
  25. setattr(testplugin, 'asdf', Mock())
  26. request = Mock()
  27. self.store.call([], 'asdf', request, Mock())
  28. self.assertFalse(getattr(testplugin, 'asdf').called) # pylint: disable=E1101
  29. def test_call_with_plugin(self):
  30. store = plugins.PluginStore()
  31. testplugin = PluginMock()
  32. store.register(testplugin)
  33. setattr(testplugin, 'asdf', Mock())
  34. request = Mock()
  35. store.call([testplugin], 'asdf', request, Mock())
  36. self.assertTrue(getattr(testplugin, 'asdf').called) # pylint: disable=E1101