test_searchproviders.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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(len(searchproviders._providers), len(settings.MISAGO_SEARCH_EXTENSIONS))
  18. for i, provider in enumerate(searchproviders._providers):
  19. classname = settings.MISAGO_SEARCH_EXTENSIONS[i].split('.')[-1]
  20. self.assertEqual(provider.__name__, classname)
  21. def test_get_providers(self):
  22. """get_providers returns initialized providers"""
  23. searchproviders = SearchProviders([])
  24. searchproviders._initialized = True
  25. searchproviders._providers = [MockProvider, MockProvider, MockProvider]
  26. self.assertEqual([m.__class__ for m in searchproviders.get_providers(True)],
  27. searchproviders._providers)
  28. def test_providers_are_init_with_request(self):
  29. """providers constructor is provided with request"""
  30. searchproviders = SearchProviders([])
  31. searchproviders._initialized = True
  32. searchproviders._providers = [MockProvider]
  33. self.assertEqual(searchproviders.get_providers('REQUEST')[0].request, 'REQUEST')
  34. def test_get_allowed_providers(self):
  35. """
  36. get_allowed_providers returns only providers that didn't raise in allow_search
  37. """
  38. searchproviders = SearchProviders([])
  39. searchproviders._initialized = True
  40. searchproviders._providers = [MockProvider, DisallowedProvider, MockProvider]
  41. self.assertEqual([m.__class__ for m in searchproviders.get_allowed_providers(True)],
  42. [MockProvider, MockProvider])