|
2 | 2 |
|
3 | 3 | import pytest |
4 | 4 | from pydantic import BaseModel |
| 5 | +from redis.asyncio import Redis |
5 | 6 |
|
6 | 7 | from matter_persistence.redis.exceptions import CacheRecordNotFoundError |
7 | 8 | from matter_persistence.redis.manager import CacheManager |
@@ -66,9 +67,10 @@ async def test_cache_manager_incorrect_argument_combination(): |
66 | 67 | _ = CacheManager() |
67 | 68 |
|
68 | 69 |
|
69 | | -async def test_cache_manager_save_with_key_and_get_with_key_success(cache_manager, test_dto): |
70 | | - await cache_manager.save_with_key("key", test_dto, TestDTO) |
71 | | - assert await cache_manager.get_with_key("key", TestDTO) |
| 70 | +@pytest.mark.parametrize("use_key_as_is", (True, False)) |
| 71 | +async def test_cache_manager_save_with_key_and_get_with_key_success(cache_manager, test_dto, use_key_as_is: bool): |
| 72 | + await cache_manager.save_with_key("key", test_dto, TestDTO, use_key_as_is=use_key_as_is) |
| 73 | + assert await cache_manager.get_with_key("key", TestDTO, use_key_as_is=use_key_as_is) |
72 | 74 |
|
73 | 75 |
|
74 | 76 | async def test_cache_manager_save_and_get_many_objects_with_keys_success(cache_manager: CacheManager) -> None: |
@@ -107,18 +109,29 @@ async def test_cache_manager_save_with_key_and_get_with_key_expired(cache_manage |
107 | 109 | await cache_manager.get_with_key("key", TestDTO) |
108 | 110 |
|
109 | 111 |
|
110 | | -async def test_cache_manager_cache_record_with_key_exists(cache_manager, test_dto): |
111 | | - await cache_manager.save_with_key("key", test_dto, TestDTO) |
112 | | - assert await cache_manager.cache_record_with_key_exists("key", TestDTO) |
| 112 | +@pytest.mark.parametrize("use_key_as_is", (True, False)) |
| 113 | +async def test_cache_manager_cache_record_with_key_exists(cache_manager, test_dto, use_key_as_is: bool): |
| 114 | + await cache_manager.save_with_key("key", test_dto, TestDTO, use_key_as_is=use_key_as_is) |
| 115 | + assert await cache_manager.cache_record_with_key_exists("key", TestDTO, use_key_as_is=use_key_as_is) |
113 | 116 |
|
114 | 117 |
|
115 | | -async def test_cache_manager_delete_with_key(cache_manager): |
116 | | - await cache_manager.save_with_key("key", "value") |
117 | | - await cache_manager.delete_with_key("key") |
| 118 | +@pytest.mark.parametrize("use_key_as_is", (True, False)) |
| 119 | +async def test_cache_manager_delete_with_key(cache_manager, use_key_as_is: bool): |
| 120 | + await cache_manager.save_with_key("key", "value", use_key_as_is=use_key_as_is) |
| 121 | + await cache_manager.delete_with_key("key", use_key_as_is=use_key_as_is) |
118 | 122 | with pytest.raises(CacheRecordNotFoundError): |
119 | | - await cache_manager.get_with_key("key") |
| 123 | + await cache_manager.get_with_key("key", use_key_as_is=use_key_as_is) |
120 | 124 |
|
121 | 125 |
|
122 | 126 | async def test_cache_manager_set_many_with_sentinel(cache_manager_with_sentinel: CacheManager) -> None: |
123 | 127 | await cache_manager_with_sentinel.save_with_key("test", "some_value") |
124 | 128 | assert (await cache_manager_with_sentinel.get_with_key("test")).decode() == "some_value" |
| 129 | + |
| 130 | + |
| 131 | +async def test_cache_manager_use_key_as_is_works( |
| 132 | + cache_manager: CacheManager, async_redis_client: Redis, test_dto: TestDTO |
| 133 | +) -> None: |
| 134 | + key = "test.key.without.need.of.changing" |
| 135 | + value = TestDTO(test_field=234) |
| 136 | + await async_redis_client.set(key, value.model_dump_json()) |
| 137 | + assert await cache_manager.get_with_key(key=key, object_class=TestDTO, use_key_as_is=True) == value |
0 commit comments