test_dynamic_settings_middleware.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from unittest.mock import Mock, PropertyMock
  2. import pytest
  3. from django.utils.functional import SimpleLazyObject
  4. from misago.conf.middleware import dynamic_settings_middleware
  5. @pytest.fixture
  6. def get_response():
  7. return Mock()
  8. @pytest.fixture
  9. def settings():
  10. return PropertyMock()
  11. @pytest.fixture
  12. def request_mock(settings):
  13. request = Mock()
  14. type(request).settings = settings
  15. return request
  16. def test_middleware_sets_attr_on_request(db, get_response, request_mock, settings):
  17. middleware = dynamic_settings_middleware(get_response)
  18. middleware(request_mock)
  19. settings.assert_called_once()
  20. def test_attr_set_by_middleware_on_request_is_lazy_object(
  21. db, get_response, request_mock, settings
  22. ):
  23. middleware = dynamic_settings_middleware(get_response)
  24. middleware(request_mock)
  25. attr_value = settings.call_args[0][0]
  26. assert isinstance(attr_value, SimpleLazyObject)
  27. def test_middleware_calls_get_response(db, get_response, request_mock):
  28. middleware = dynamic_settings_middleware(get_response)
  29. middleware(request_mock)
  30. get_response.assert_called_once()
  31. def test_middleware_is_not_reading_db(
  32. db, get_response, request_mock, django_assert_num_queries
  33. ):
  34. with django_assert_num_queries(0):
  35. middleware = dynamic_settings_middleware(get_response)
  36. middleware(request_mock)
  37. def test_middleware_is_not_reading_cache(db, mocker, get_response, request_mock):
  38. cache_get = mocker.patch("django.core.cache.cache.get")
  39. middleware = dynamic_settings_middleware(get_response)
  40. middleware(request_mock)
  41. cache_get.assert_not_called()