Skip to content

Commit 9dec363

Browse files
matteomorlackshaypal5
authored andcommitted
feat: add tests for redis
1 parent 2c7ce3b commit 9dec363

2 files changed

Lines changed: 55 additions & 0 deletions

File tree

tests/redis_tests/test_async_redis_core.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,36 @@ def _func(x: int) -> int:
109109
return core
110110

111111

112+
@pytest.mark.redis
113+
@pytest.mark.asyncio
114+
async def test_async_redis_key_prefix_passed_to_client():
115+
pytest.importorskip("redis")
116+
117+
class PrefixCapturingRedis(_AsyncInMemoryRedis):
118+
def __init__(self):
119+
super().__init__()
120+
self.keys_used: list[str] = []
121+
122+
async def hset(self, key: str, field=None, value=None, mapping=None, **kwargs):
123+
self.keys_used.append(key)
124+
await super().hset(key, field=field, value=value, mapping=mapping, **kwargs)
125+
126+
client = PrefixCapturingRedis()
127+
128+
async def get_redis_client():
129+
return client
130+
131+
@cachier(backend="redis", redis_client=get_redis_client, key_prefix="custom-prefix")
132+
async def async_cached_value(x: int) -> int:
133+
return x + 1
134+
135+
result = await async_cached_value(1)
136+
assert result == 2
137+
assert client.keys_used, "Redis client was not called"
138+
assert all(key.startswith("custom-prefix:") for key in client.keys_used)
139+
assert all(stored_key.startswith("custom-prefix:") for stored_key in client._data)
140+
141+
112142
@pytest.mark.redis
113143
@pytest.mark.asyncio
114144
async def test_async_redis_core_helpers_and_client_resolution():

tests/redis_tests/test_redis_core.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,31 @@ def _test_redis_caching(arg_1, arg_2):
130130
assert val6 == val5
131131

132132

133+
@pytest.mark.redis
134+
def test_redis_key_prefix_passed_to_client():
135+
pytest.importorskip("redis")
136+
137+
class PrefixCapturingRedis(_SyncInMemoryRedis):
138+
def __init__(self):
139+
super().__init__()
140+
self.keys_used: list[str] = []
141+
142+
def hset(self, key: str, field=None, value=None, mapping=None, **kwargs):
143+
self.keys_used.append(key)
144+
return super().hset(key, field=field, value=value, mapping=mapping, **kwargs)
145+
146+
client = PrefixCapturingRedis()
147+
148+
@cachier(backend="redis", redis_client=client, key_prefix="custom-prefix")
149+
def cached_value(x: int) -> int:
150+
return x + 1
151+
152+
result = cached_value(1)
153+
assert result == 2
154+
assert client.keys_used, "Redis client was not called"
155+
assert all(key.startswith("custom-prefix:") for key in client.keys_used)
156+
157+
133158
@pytest.mark.redis
134159
def test_redis_stale_after():
135160
"""Testing Redis core stale_after functionality."""

0 commit comments

Comments
 (0)