test_dynamic_settings_middleware.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from unittest.mock import Mock
  2. import pytest
  3. from django.utils.functional import SimpleLazyObject
  4. from ..middleware import dynamic_settings_middleware
  5. @pytest.fixture
  6. def get_response():
  7. return Mock()
  8. class PlainRequest:
  9. pass
  10. @pytest.fixture
  11. def plain_request():
  12. return PlainRequest()
  13. def test_middleware_sets_attr_on_request(db, get_response, plain_request):
  14. middleware = dynamic_settings_middleware(get_response)
  15. middleware(plain_request)
  16. assert hasattr(plain_request, "settings")
  17. def test_attr_set_by_middleware_on_request_is_lazy_object(
  18. db, get_response, plain_request
  19. ):
  20. middleware = dynamic_settings_middleware(get_response)
  21. middleware(plain_request)
  22. assert isinstance(plain_request.settings, SimpleLazyObject)
  23. def test_middleware_calls_get_response(db, get_response, plain_request):
  24. middleware = dynamic_settings_middleware(get_response)
  25. middleware(plain_request)
  26. get_response.assert_called_once()
  27. def test_middleware_is_not_reading_from_db(
  28. db, get_response, plain_request, django_assert_num_queries
  29. ):
  30. with django_assert_num_queries(0):
  31. middleware = dynamic_settings_middleware(get_response)
  32. middleware(plain_request)
  33. def test_middleware_is_not_reading_from_cache(db, mocker, get_response, plain_request):
  34. cache_get = mocker.patch("django.core.cache.cache.get")
  35. middleware = dynamic_settings_middleware(get_response)
  36. middleware(plain_request)
  37. cache_get.assert_not_called()