Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def _memory_cache_ttu(_key: Any, value: MemoryCacheEntry, now: float) -> float:
return float(expiration_epoch)


def _memory_cache_getsizeof(value: MemoryCacheEntry) -> int: # pyright: ignore[reportUnusedParameter] # noqa: ARG001
def _memory_cache_getsizeof(value: MemoryCacheEntry) -> int: # pyright: ignore[reportUnusedParameter]
"""Return size of cache entry (always 1 for entry counting)."""
return 1

Expand Down
32 changes: 19 additions & 13 deletions key-value/key-value-aio/tests/stores/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,11 @@
from key_value.shared.code_gen.sleep import asleep
from key_value.shared.errors import InvalidTTLError, SerializationError
from key_value.shared_test.cases import (
LARGE_TEST_DATA_ARGNAMES,
LARGE_TEST_DATA_ARGVALUES,
LARGE_TEST_DATA_IDS,
SIMPLE_TEST_DATA_ARGNAMES,
SIMPLE_TEST_DATA_ARGVALUES,
SIMPLE_TEST_DATA_IDS,
LARGE_DATA_CASES,
NEGATIVE_SIMPLE_CASES,
SIMPLE_CASES,
NegativeCases,
PositiveCases,
)
from pydantic import AnyHttpUrl

Expand Down Expand Up @@ -46,7 +45,7 @@ async def test_empty_ttl(self, store: BaseStore):
assert ttl == (None, None)

async def test_put_serialization_errors(self, store: BaseStore):
"""Tests that the put method does not raise an exception when called on a new store."""
"""Tests that the put method raises SerializationError for non-JSON-serializable Pydantic types."""
with pytest.raises(SerializationError):
await store.put(collection="test", key="test", value={"test": AnyHttpUrl("https://test.com")})

Expand All @@ -55,15 +54,22 @@ async def test_get_put_get(self, store: BaseStore):
await store.put(collection="test", key="test", value={"test": "test"})
assert await store.get(collection="test", key="test") == {"test": "test"}

@pytest.mark.parametrize(argnames=SIMPLE_TEST_DATA_ARGNAMES, argvalues=SIMPLE_TEST_DATA_ARGVALUES, ids=SIMPLE_TEST_DATA_IDS)
async def test_get_complex_put_get(self, store: BaseStore, data: dict[str, Any], json: str): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002
@PositiveCases.parametrize(cases=SIMPLE_CASES)
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
await store.put(collection="test", key="test", value=data)
assert await store.get(collection="test", key="test") == data
retrieved_data = await store.get(collection="test", key="test")
assert retrieved_data is not None
assert retrieved_data == round_trip

@NegativeCases.parametrize(cases=NEGATIVE_SIMPLE_CASES)
async def test_negative_models_put_get(self, store: BaseStore, data: dict[str, Any], error: type[Exception]): # pyright: ignore[reportUnusedParameter, reportUnusedParameter]
with pytest.raises(error):
await store.put(collection="test", key="test", value=data)

@pytest.mark.parametrize(argnames=LARGE_TEST_DATA_ARGNAMES, argvalues=LARGE_TEST_DATA_ARGVALUES, ids=LARGE_TEST_DATA_IDS)
async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str): # pyright: ignore[reportUnusedParameter, reportUnusedParameter] # noqa: ARG002
@PositiveCases.parametrize(cases=[LARGE_DATA_CASES])
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
await store.put(collection="test", key="test", value=data)
assert await store.get(collection="test", key="test") == data
assert await store.get(collection="test", key="test") == round_trip

async def test_put_many_get(self, store: BaseStore):
await store.put_many(collection="test", keys=["test", "test_2"], values=[{"test": "test"}, {"test": "test_2"}])
Expand Down
9 changes: 4 additions & 5 deletions key-value/key-value-aio/tests/stores/keyring/test_keyring.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Any

import pytest
from key_value.shared_test.cases import LARGE_TEST_DATA_ARGNAMES, LARGE_TEST_DATA_ARGVALUES, LARGE_TEST_DATA_IDS
from key_value.shared_test.cases import LARGE_DATA_CASES, PositiveCases
from typing_extensions import override

from key_value.aio.stores.base import BaseStore
Expand All @@ -28,7 +28,6 @@ async def test_not_unbounded(self, store: BaseStore): ...

@override
@pytest.mark.skipif(condition=detect_on_windows(), reason="Keyrings do not support large values on Windows")
@pytest.mark.parametrize(argnames=LARGE_TEST_DATA_ARGNAMES, argvalues=LARGE_TEST_DATA_ARGVALUES, ids=LARGE_TEST_DATA_IDS)
async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str):
await store.put(collection="test", key="test", value=data)
assert await store.get(collection="test", key="test") == data
@PositiveCases.parametrize(cases=[LARGE_DATA_CASES])
async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str, round_trip: dict[str, Any]): # pyright: ignore[reportUnusedParameter]
await super().test_get_large_put_get(store, data, json, round_trip=round_trip)
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING

import pytest
from key_value.shared_test.cases import LARGE_TEST_DATA_ARGNAMES, LARGE_TEST_DATA_ARGVALUES, LARGE_TEST_DATA_IDS
from typing_extensions import override

from key_value.aio.stores.base import BaseStore
Expand Down Expand Up @@ -29,9 +28,3 @@ async def store(self) -> "WindowsRegistryStore":
@override
@pytest.mark.skip(reason="We do not test boundedness of registry stores")
async def test_not_unbounded(self, store: BaseStore): ...

@override
@pytest.mark.parametrize(argnames=LARGE_TEST_DATA_ARGNAMES, argvalues=LARGE_TEST_DATA_ARGVALUES, ids=LARGE_TEST_DATA_IDS)
async def test_get_large_put_get(self, store: BaseStore, data: dict[str, Any], json: str):
await store.put(collection="test", key="test", value=data)
assert await store.get(collection="test", key="test") == data
Loading
Loading