def test_cached_no_backend(request): request.app.cache = mod.NoOpCache() orig_func = mock.Mock(__name__='orig_func') orig_func.return_value = 'data' cached_func = mod.cached()(orig_func) result = cached_func('test', a=3) assert result == 'data' orig_func.assert_called_once_with('test', a=3)
def test_cache_found_no_expiry(cache): test_func = mock.Mock(__name__='test_func') cached_func = mod.cached()(test_func) cache.__getitem__.return_value = {'value': 42} result = cached_func(1) assert result == 42 assert not test_func.called assert not cache.__setitem__.called
def test_cache_not_found_no_expiry(cache, get_key): test_func = mock.Mock(__name__='test_func', return_value=42) cached_func = mod.cached()(test_func) cache.__getitem__.side_effect = KeyError() get_key.return_value = 'unique_key' result = cached_func(1) assert result == 42 test_func.assert_called_once_with(1) cache.__setitem__.assert_called_once_with('unique_key', {'value': 42})
def test_cached_not_found_custom_timeout(request, generate_key, parse_prefix, get, setfunc, base_cache): request.app.cache = base_cache orig_func = mock.Mock(__name__='orig_func') orig_func.return_value = 'fresh' parse_prefix.return_value = '' generate_key.return_value = 'md5_key' get.return_value = None cached_func = mod.cached(timeout=180)(orig_func) cached_func('test', a=3) setfunc.assert_called_once_with('md5_key', 'fresh', timeout=180)
def test_cached_found(request, generate_key, parse_prefix, get, setfunc, base_cache): request.app.cache = base_cache orig_func = mock.Mock(__name__='orig_func') generate_key.return_value = 'md5_key' parse_prefix.return_value = '' get.return_value = 'data' cached_func = mod.cached()(orig_func) result = cached_func('test', a=3) assert result == 'data' generate_key.assert_called_once_with('orig_func', 'test', a=3) get.assert_called_once_with('md5_key') assert not setfunc.called
def test_cache_found_but_expired(cache, get_key, get_expiry, has_expired): test_func = mock.Mock(__name__='test_func', return_value=48) cached_func = mod.cached(expires_in=10)(test_func) get_key.return_value = 'unique_key' get_expiry.return_value = 'now' has_expired.return_value = True cache.__getitem__.return_value = {'value': 42, 'expires': 'minute ago'} result = cached_func(1) assert result == 48 test_func.assert_called_once_with(1) cache.__setitem__.assert_called_once_with('unique_key', {'value': 48, 'expires': 'now'})
def test_cached_not_found(request, generate_key, parse_prefix, get, setfunc, base_cache): request.app.cache = base_cache orig_func = mock.Mock(__name__='orig_func') orig_func.return_value = 'fresh' parse_prefix.return_value = '' generate_key.return_value = 'md5_key' get.return_value = None cached_func = mod.cached()(orig_func) result = cached_func('test', a=3) assert result == 'fresh' generate_key.assert_called_once_with('orig_func', 'test', a=3) get.assert_called_once_with('md5_key') setfunc.assert_called_once_with('md5_key', 'fresh', timeout=base_cache.default_timeout)