MCPcopy
hub / github.com/pydantic/pydantic / test_on_validate_json_on_success

Function test_on_validate_json_on_success

tests/test_plugins.py:34–76  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

32
33
34def 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
79def test_on_validate_json_on_error() -> None:

Callers

nothing calls this directly

Calls 5

CustomPluginClass · 0.85
install_pluginFunction · 0.85
model_validateMethod · 0.80
model_validate_jsonMethod · 0.80
ModelClass · 0.70

Tested by

no test coverage detected