def test_cached_no_backend(request):
    request.app.supervisor.exts.cache = backends.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_cached_not_found_custom_timeout(request, generate_key, parse_prefix,
                                         get, setfunc, base_cache):
    request.app.supervisor.exts.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.supervisor.exts.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