test_context_processors.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from unittest.mock import Mock
  2. import pytest
  3. from .. import THEME_CACHE
  4. from ..context_processors import theme as context_processor
  5. @pytest.fixture
  6. def mock_request(cache_versions):
  7. return Mock(cache_versions=cache_versions)
  8. def test_theme_data_is_included_in_template_context(db, mock_request):
  9. assert context_processor(mock_request)["theme"]
  10. def test_theme_is_loaded_from_database_if_cache_is_not_available(
  11. db, mocker, mock_request, django_assert_num_queries
  12. ):
  13. mocker.patch("django.core.cache.cache.get", return_value=None)
  14. with django_assert_num_queries(3):
  15. context_processor(mock_request)
  16. def test_theme_is_loaded_from_cache_if_it_is_set(
  17. db, mocker, mock_request, django_assert_num_queries
  18. ):
  19. cache_get = mocker.patch("django.core.cache.cache.get", return_value={})
  20. with django_assert_num_queries(0):
  21. context_processor(mock_request)
  22. cache_get.assert_called_once()
  23. def test_theme_cache_is_set_if_none_exists(db, mocker, mock_request):
  24. cache_set = mocker.patch("django.core.cache.cache.set")
  25. mocker.patch("django.core.cache.cache.get", return_value=None)
  26. context_processor(mock_request)
  27. cache_set.assert_called_once()
  28. def test_theme_cache_is_not_set_if_it_already_exists(
  29. db, mocker, mock_request, django_assert_num_queries
  30. ):
  31. cache_set = mocker.patch("django.core.cache.cache.set")
  32. mocker.patch("django.core.cache.cache.get", return_value={})
  33. with django_assert_num_queries(0):
  34. context_processor(mock_request)
  35. cache_set.assert_not_called()
  36. def test_theme_cache_key_includes_cache_name_and_version(
  37. db, mocker, mock_request, cache_versions
  38. ):
  39. cache_set = mocker.patch("django.core.cache.cache.set")
  40. mocker.patch("django.core.cache.cache.get", return_value=None)
  41. context_processor(mock_request)
  42. cache_key = cache_set.call_args[0][0]
  43. assert THEME_CACHE in cache_key
  44. assert cache_versions[THEME_CACHE] in cache_key