Example #1
0
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)
Example #2
0
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
Example #3
0
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})
Example #4
0
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)
Example #5
0
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
Example #6
0
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'})
Example #7
0
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)