|
9 | 9 | from key_value.shared.code_gen.sleep import asleep |
10 | 10 | from key_value.shared.errors import InvalidTTLError, SerializationError |
11 | 11 | from key_value.shared_test.cases import ( |
12 | | - LARGE_TEST_DATA_ARGNAMES, |
13 | | - LARGE_TEST_DATA_ARGVALUES, |
14 | | - LARGE_TEST_DATA_IDS, |
15 | | - SIMPLE_TEST_DATA_ARGNAMES, |
16 | | - SIMPLE_TEST_DATA_ARGVALUES, |
17 | | - SIMPLE_TEST_DATA_IDS, |
| 12 | + LARGE_DATA_CASES, |
| 13 | + NEGATIVE_SIMPLE_CASES, |
| 14 | + SIMPLE_CASES, |
| 15 | + NegativeCases, |
| 16 | + PositiveCases, |
18 | 17 | ) |
19 | 18 | from pydantic import AnyHttpUrl |
20 | 19 |
|
@@ -50,40 +49,27 @@ async def test_put_serialization_errors(self, store: BaseStore): |
50 | 49 | with pytest.raises(SerializationError): |
51 | 50 | await store.put(collection="test", key="test", value={"test": AnyHttpUrl("https://test.com")}) |
52 | 51 |
|
53 | | - @pytest.mark.parametrize( |
54 | | - "name,value", |
55 | | - [ |
56 | | - ("datetime", __import__("datetime").datetime.now(__import__("datetime").timezone.utc)), |
57 | | - ("date", __import__("datetime").date(2025, 1, 1)), |
58 | | - ("time", __import__("datetime").time(12, 0, 0)), |
59 | | - ("uuid", __import__("uuid").UUID("12345678-1234-5678-1234-567812345678")), |
60 | | - ("bytes", b"hello world"), |
61 | | - ("tuple", (1, 2, 3)), |
62 | | - ("set", {1, 2, 3}), |
63 | | - ("function", lambda x: x), |
64 | | - ("type", type("TestClass", (), {})), |
65 | | - ], |
66 | | - ids=["datetime", "date", "time", "uuid", "bytes", "tuple", "set", "function", "type"], |
67 | | - ) |
68 | | - async def test_put_nonserializable_types(self, store: BaseStore, name: str, value: Any): # pyright: ignore[reportUnusedParameter] # noqa: ARG002 |
69 | | - """Tests that non-JSON-serializable Python types raise SerializationError.""" |
70 | | - with pytest.raises(SerializationError): |
71 | | - await store.put(collection="test", key="test", value={"test": value}) |
72 | | - |
73 | 52 | async def test_get_put_get(self, store: BaseStore): |
74 | 53 | assert await store.get(collection="test", key="test") is None |
75 | 54 | await store.put(collection="test", key="test", value={"test": "test"}) |
76 | 55 | assert await store.get(collection="test", key="test") == {"test": "test"} |
77 | 56 |
|
78 | | - @pytest.mark.parametrize(argnames=SIMPLE_TEST_DATA_ARGNAMES, argvalues=SIMPLE_TEST_DATA_ARGVALUES, ids=SIMPLE_TEST_DATA_IDS) |
79 | | - async def test_get_complex_put_get(self, store: BaseStore, data: dict[str, Any], json: str): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002 |
| 57 | + @PositiveCases.parametrize(cases=SIMPLE_CASES) |
| 58 | + async def test_models_put_get(self, store: BaseStore, data: dict[str, Any], json: str, round_trip: dict[str, Any]): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002 |
80 | 59 | await store.put(collection="test", key="test", value=data) |
81 | | - assert await store.get(collection="test", key="test") == data |
| 60 | + retrieved_data = await store.get(collection="test", key="test") |
| 61 | + assert retrieved_data is not None |
| 62 | + assert retrieved_data == round_trip |
| 63 | + |
| 64 | + @NegativeCases.parametrize(cases=NEGATIVE_SIMPLE_CASES) |
| 65 | + async def test_negative_models_put_get(self, store: BaseStore, data: dict[str, Any], error: type[Exception]): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] |
| 66 | + with pytest.raises(error): |
| 67 | + await store.put(collection="test", key="test", value=data) |
82 | 68 |
|
83 | | - @pytest.mark.parametrize(argnames=LARGE_TEST_DATA_ARGNAMES, argvalues=LARGE_TEST_DATA_ARGVALUES, ids=LARGE_TEST_DATA_IDS) |
84 | | - async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002 |
| 69 | + @PositiveCases.parametrize(cases=[LARGE_DATA_CASES]) |
| 70 | + async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str, round_trip: dict[str, Any]): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002 |
85 | 71 | await store.put(collection="test", key="test", value=data) |
86 | | - assert await store.get(collection="test", key="test") == data |
| 72 | + assert await store.get(collection="test", key="test") == round_trip |
87 | 73 |
|
88 | 74 | async def test_put_many_get(self, store: BaseStore): |
89 | 75 | await store.put_many(collection="test", keys=["test", "test_2"], values=[{"test": "test"}, {"test": "test_2"}]) |
|
0 commit comments