()
| 32 | |
| 33 | |
| 34 | def test_on_validate_json_on_success() -> None: |
| 35 | class CustomOnValidateJson(ValidateJsonHandlerProtocol): |
| 36 | def on_enter( |
| 37 | self, |
| 38 | input: str | bytes | bytearray, |
| 39 | *, |
| 40 | strict: bool | None = None, |
| 41 | extra: ExtraValues | None = None, |
| 42 | context: Any | None = None, |
| 43 | self_instance: Any | None = None, |
| 44 | by_alias: bool | None = None, |
| 45 | by_name: bool | None = None, |
| 46 | ) -> None: |
| 47 | assert input == '{"a": 1}' |
| 48 | assert strict is None |
| 49 | assert extra is None |
| 50 | assert context is None |
| 51 | assert self_instance is None |
| 52 | |
| 53 | def on_success(self, result: Any) -> None: |
| 54 | assert isinstance(result, Model) |
| 55 | |
| 56 | class CustomPlugin(PydanticPluginProtocol): |
| 57 | def new_schema_validator(self, schema, schema_type, schema_type_path, schema_kind, config, plugin_settings): |
| 58 | assert config == {'title': 'Model'} |
| 59 | assert plugin_settings == {'observe': 'all'} |
| 60 | assert schema_type.__name__ == 'Model' |
| 61 | assert schema_type_path == SchemaTypePath( |
| 62 | 'tests.test_plugins', 'test_on_validate_json_on_success.<locals>.Model' |
| 63 | ) |
| 64 | assert schema_kind == 'BaseModel' |
| 65 | return None, CustomOnValidateJson(), None |
| 66 | |
| 67 | plugin = CustomPlugin() |
| 68 | with install_plugin(plugin): |
| 69 | |
| 70 | class Model(BaseModel, plugin_settings={'observe': 'all'}): |
| 71 | a: int |
| 72 | |
| 73 | assert Model.model_validate({'a': 1}) == Model(a=1) |
| 74 | assert Model.model_validate_json('{"a": 1}') == Model(a=1) |
| 75 | |
| 76 | assert Model.__pydantic_validator__.title == 'Model' |
| 77 | |
| 78 | |
| 79 | def test_on_validate_json_on_error() -> None: |
nothing calls this directly
no test coverage detected