test_searchproviders.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from django.core.exceptions import PermissionDenied
  2. from django.test import TestCase
  3. from ...conf import settings
  4. from ..searchprovider import SearchProvider
  5. from ..searchproviders import SearchProviders
  6. class MockProvider(SearchProvider):
  7. pass
  8. class DisallowedProvider(SearchProvider):
  9. def allow_search(self):
  10. raise PermissionDenied()
  11. class SearchProvidersTests(TestCase):
  12. def test_initialize_providers(self):
  13. """initialize_providers initializes providers"""
  14. searchproviders = SearchProviders(settings.MISAGO_SEARCH_EXTENSIONS)
  15. searchproviders.initialize_providers()
  16. self.assertTrue(searchproviders._initialized)
  17. self.assertEqual(
  18. len(searchproviders._providers), len(settings.MISAGO_SEARCH_EXTENSIONS)
  19. )
  20. for i, provider in enumerate(searchproviders._providers):
  21. classname = settings.MISAGO_SEARCH_EXTENSIONS[i].split(".")[-1]
  22. self.assertEqual(provider.__name__, classname)
  23. def test_get_providers(self):
  24. """get_providers returns initialized providers"""
  25. searchproviders = SearchProviders([])
  26. searchproviders._initialized = True
  27. searchproviders._providers = [MockProvider, MockProvider, MockProvider]
  28. self.assertEqual(
  29. [m.__class__ for m in searchproviders.get_providers(True)],
  30. searchproviders._providers,
  31. )
  32. def test_providers_are_init_with_request(self):
  33. """providers constructor is provided with request"""
  34. searchproviders = SearchProviders([])
  35. searchproviders._initialized = True
  36. searchproviders._providers = [MockProvider]
  37. self.assertEqual(searchproviders.get_providers("REQUEST")[0].request, "REQUEST")
  38. def test_get_allowed_providers(self):
  39. """get_allowed_providers returns only providers that didn't raise in allow_search"""
  40. searchproviders = SearchProviders([])
  41. searchproviders._initialized = True
  42. searchproviders._providers = [MockProvider, DisallowedProvider, MockProvider]
  43. self.assertEqual(
  44. [m.__class__ for m in searchproviders.get_allowed_providers(True)],
  45. [MockProvider, MockProvider],
  46. )