99from key_value .shared .code_gen .sleep import asleep
1010from key_value .shared .errors import InvalidTTLError , SerializationError
1111from 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 ,
1817)
1918from pydantic import AnyHttpUrl
2019
@@ -46,7 +45,7 @@ async def test_empty_ttl(self, store: BaseStore):
4645 assert ttl == (None , None )
4746
4847 async def test_put_serialization_errors (self , store : BaseStore ):
49- """Tests that the put method does not raise an exception when called on a new store ."""
48+ """Tests that the put method raises SerializationError for non-JSON-serializable Pydantic types ."""
5049 with pytest .raises (SerializationError ):
5150 await store .put (collection = "test" , key = "test" , value = {"test" : AnyHttpUrl ("https://test.com" )})
5251
@@ -55,15 +54,22 @@ async def test_get_put_get(self, store: BaseStore):
5554 await store .put (collection = "test" , key = "test" , value = {"test" : "test" })
5655 assert await store .get (collection = "test" , key = "test" ) == {"test" : "test" }
5756
58- @pytest . mark . parametrize (argnames = SIMPLE_TEST_DATA_ARGNAMES , argvalues = SIMPLE_TEST_DATA_ARGVALUES , ids = SIMPLE_TEST_DATA_IDS )
59- 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
6059 await store .put (collection = "test" , key = "test" , value = data )
61- 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 )
6268
63- @pytest . mark . parametrize (argnames = LARGE_TEST_DATA_ARGNAMES , argvalues = LARGE_TEST_DATA_ARGVALUES , ids = LARGE_TEST_DATA_IDS )
64- 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
6571 await store .put (collection = "test" , key = "test" , value = data )
66- assert await store .get (collection = "test" , key = "test" ) == data
72+ assert await store .get (collection = "test" , key = "test" ) == round_trip
6773
6874 async def test_put_many_get (self , store : BaseStore ):
6975 await store .put_many (collection = "test" , keys = ["test" , "test_2" ], values = [{"test" : "test" }, {"test" : "test_2" }])
0 commit comments