(defer_build: bool, generate_schema_calls: CallCounter)
| 708 | |
| 709 | @pytest.mark.parametrize('defer_build', [True, False]) |
| 710 | def test_config_model_defer_build(defer_build: bool, generate_schema_calls: CallCounter): |
| 711 | config = ConfigDict(defer_build=defer_build) |
| 712 | |
| 713 | class MyModel(BaseModel): |
| 714 | model_config = config |
| 715 | x: int |
| 716 | |
| 717 | if defer_build: |
| 718 | assert isinstance(MyModel.__pydantic_validator__, MockValSer) |
| 719 | assert isinstance(MyModel.__pydantic_serializer__, MockValSer) |
| 720 | assert generate_schema_calls.count == 0, 'Should respect defer_build' |
| 721 | else: |
| 722 | assert isinstance(MyModel.__pydantic_validator__, SchemaValidator) |
| 723 | assert isinstance(MyModel.__pydantic_serializer__, SchemaSerializer) |
| 724 | assert generate_schema_calls.count == 1, 'Should respect defer_build' |
| 725 | |
| 726 | m = MyModel(x=1) |
| 727 | assert m.x == 1 |
| 728 | assert m.model_dump()['x'] == 1 |
| 729 | assert m.model_validate({'x': 2}).x == 2 |
| 730 | assert m.model_json_schema()['type'] == 'object' |
| 731 | |
| 732 | assert isinstance(MyModel.__pydantic_validator__, SchemaValidator) |
| 733 | assert isinstance(MyModel.__pydantic_serializer__, SchemaSerializer) |
| 734 | assert generate_schema_calls.count == 1, 'Should not build duplicated core schemas' |
| 735 | |
| 736 | |
| 737 | @pytest.mark.parametrize('defer_build', [True, False]) |
nothing calls this directly
no test coverage detected