Coverage for tests/library/test_serializer.py: 100%
21 statements
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
1from typing import Any 1abcdefghijklmnopqrst
3from fast_depends import Depends, Provider, inject 1abcdefghijklmnopqrst
4from fast_depends.library.serializer import OptionItem, Serializer, SerializerProto 1abcdefghijklmnopqrst
7class EchoSerializer(Serializer): 1abcdefghijklmnopqrst
8 """The smallest possible `Serializer`: everything else is inherited."""
10 def __call__(self, call_kwargs: dict[str, Any]) -> dict[str, Any]: 1abcdefghijklmnopqrst
11 return call_kwargs 1abcdefghijklmnopqrst
14class EchoSerializerFactory(SerializerProto): 1abcdefghijklmnopqrst
15 def __call__( 1abcdefghijklmnopqrst
16 self,
17 *,
18 name: str,
19 options: list[OptionItem],
20 response_type: Any,
21 ) -> EchoSerializer:
22 return EchoSerializer( 1abcdefghijklmnopqrst
23 name=name,
24 options=options,
25 response_type=response_type,
26 )
29def test_default_encode_uses_stdlib_json() -> None: 1abcdefghijklmnopqrst
30 assert EchoSerializerFactory.encode({"a": 1}) == b'{"a": 1}' 1abcdefghijklmnopqrst
33def test_default_get_aliases_is_empty() -> None: 1abcdefghijklmnopqrst
34 serializer = EchoSerializer(name="func", options=[], response_type=None) 1abcdefghijklmnopqrst
35 assert serializer.get_aliases() == () 1abcdefghijklmnopqrst
38def test_minimal_serializer_is_usable() -> None: 1abcdefghijklmnopqrst
39 def dep() -> int: 1abcdefghijklmnopqrst
40 return 1 1abcdefghijklmnopqrst
42 @inject( 1abcdefghijklmnopqrst
43 serializer_cls=EchoSerializerFactory(),
44 dependency_provider=Provider(),
45 cast_result=True,
46 )
47 def func(a: int, *, b: str = "b", d: int = Depends(dep)) -> str: 1abcdefghijklmnopqrst
48 return f"{a}-{b}-{d}" 1abcdefghijklmnopqrst
50 # nothing is casted - the serializer echoes its input back
51 assert func("1") == "1-b-1" 1abcdefghijklmnopqrst