test_searchproviders.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. """get_allowed_providers returns only providers that didn't raise in allow_search"""
  36. searchproviders = SearchProviders([])
  37. searchproviders._initialized = True
  38. searchproviders._providers = [MockProvider, DisallowedProvider, MockProvider]
  39. self.assertEqual([m.__class__ for m in searchproviders.get_allowed_providers(True)],
  40. [MockProvider, MockProvider])