test_searchproviders.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django.core.exceptions import PermissionDenied
  2. from django.test import TestCase
  3. from misago.conf import settings
  4. from misago.search.searchprovider import SearchProvider
  5. from misago.search.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. for i, provider in enumerate(searchproviders._providers):
  20. classname = settings.MISAGO_SEARCH_EXTENSIONS[i].split('.')[-1]
  21. self.assertEqual(provider.__name__, classname)
  22. def test_get_providers(self):
  23. """get_providers returns initialized providers"""
  24. searchproviders = SearchProviders([])
  25. searchproviders._initialized = True
  26. searchproviders._providers = [MockProvider, MockProvider, MockProvider]
  27. self.assertEqual(
  28. [m.__class__ for m in searchproviders.get_providers(True)],
  29. searchproviders._providers)
  30. def test_providers_are_init_with_request(self):
  31. """providers constructor is provided with request"""
  32. searchproviders = SearchProviders([])
  33. searchproviders._initialized = True
  34. searchproviders._providers = [MockProvider]
  35. self.assertEqual(
  36. searchproviders.get_providers('REQUEST')[0].request, 'REQUEST')
  37. def test_get_allowed_providers(self):
  38. """
  39. get_allowed_providers returns only providers that didn't raise in allow_search
  40. """
  41. searchproviders = SearchProviders([])
  42. searchproviders._initialized = True
  43. searchproviders._providers = [MockProvider, DisallowedProvider, MockProvider]
  44. self.assertEqual(
  45. [m.__class__ for m in searchproviders.get_allowed_providers(True)],
  46. [MockProvider, MockProvider])