Coverage for tests/serializers/pydantic/test_encode.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.17.3, created at 2026-11-13 05:19 +0000

1from typing import Any 1abcdefghijklmno

2 

3import pytest 1abcdefghijklmno

4from pydantic import BaseModel 1abcdefghijklmno

5 

6from fast_depends.pydantic.serializer import PydanticSerializer 1abcdefghijklmno

7from tests.marks import pydanticV1, pydanticV2 1abcdefghijklmno

8from tests.serializers.params import comptex_params, parametrized 1abcdefghijklmno

9 

10 

11class SimpleModel(BaseModel): 1abcdefghijklmno

12 r: str 1abcdefghij

13 

14 

15@pytest.mark.parametrize( 1abcdefghijklmno

16 ("message", "expected_message"), 

17 ( 

18 *parametrized, 

19 *comptex_params, 

20 pytest.param( 

21 SimpleModel(r="hello!"), 

22 b'{"r":"hello!"}', 

23 id="model", 

24 ), 

25 ), 

26) 

27@pydanticV2 1abcdefghijklmno

28def test_encode_v2( 1abcdefghijklmno

29 message: Any, 

30 expected_message: bytes, 

31) -> None: 

32 msg = PydanticSerializer.encode(message) 1cdfhjklmno

33 assert msg == expected_message 1cdfhjklmno

34 

35 

36@pytest.mark.parametrize( 1abcdefghijklmno

37 ("message", "expected_message"), 

38 ( 

39 *parametrized, 

40 *comptex_params, 

41 pytest.param( 

42 SimpleModel(r="hello!"), 

43 b'{"r":"hello!"}', 

44 id="model", 

45 ), 

46 ), 

47) 

48@pydanticV1 1abcdefghijklmno

49def test_encode_v1( 1abcdefghijklmno

50 message: Any, 

51 expected_message: bytes, 

52) -> None: 

53 msg = PydanticSerializer.encode(message) 1abegi

54 # Pydantic v1 encodes through orjson/ujson/stdlib json, whichever is 

55 # installed, and they disagree on separator whitespace only. 

56 assert msg.replace(b", ", b",").replace(b": ", b":") == expected_message 1abegi