def test_should_reuse_cache_singleton(self): """ https://github.com/chibisov/drf-extensions/issues/26 https://docs.djangoproject.com/en/dev/topics/cache/#django.core.cache.caches """ cache_response_instance = cache_response() another_cache_response_instance = cache_response() self.assertTrue(cache_response_instance.cache is another_cache_response_instance.cache)
def test_should_store_response_in_cache_with_timeout_from_settings(self): cache_response_decorator = cache_response() cache_response_decorator.cache.set = Mock() class TestView(views.APIView): @cache_response_decorator def get(self, request, *args, **kwargs): return Response('Response from method 4') view_instance = TestView() response = view_instance.dispatch(request=self.request) self.assertTrue(cache_response_decorator.cache.set.called, 'Cache saving should be performed') self.assertEqual(cache_response_decorator.cache.set.call_args_list[0][0][2], 100)
def test_cache_response_with_error_by_default(self): cache_response_decorator = cache_response() class TestView(views.APIView): def __init__(self, status, *args, **kwargs): self.status = status super().__init__(*args, **kwargs) @cache_response_decorator def get(self, request, *args, **kwargs): return Response(status=self.status) with patch.object(cache_response_decorator.cache, 'set'): for status in (400, 500): view_instance = TestView(status=status) view_instance.dispatch(request=self.request) self.assertTrue(cache_response_decorator.cache.set.called)
def test_cache_response_with_error_by_default(self): cache_response_decorator = cache_response() class TestView(views.APIView): def __init__(self, status, *args, **kwargs): self.status = status super(TestView, self).__init__(*args, **kwargs) @cache_response_decorator def get(self, request, *args, **kwargs): return Response(status=self.status) with patch.object(cache_response_decorator.cache, 'set'): for status in (400, 500): view_instance = TestView(status=status) view_instance.dispatch(request=self.request) self.assertTrue(cache_response_decorator.cache.set.called)
def test_should_use_cache_error_from_decorator_if_it_is_specified(self): self.assertTrue(cache_response(cache_errors=True).cache_errors)
def test_should_use_cache_error_from_settings_by_default(self): self.assertFalse(cache_response().cache_errors)
def test_dont_connect_to_cache_on_init(self): with patch('rest_framework_extensions.cache.decorators.get_cache'): cache_response() self.assertFalse( rest_framework_extensions.cache.decorators.get_cache.called)