@@ -284,6 +284,46 @@ def test_class_decorators_with_empty_entries(output_file: Path) -> None:
284284 )
285285
286286
287+ @freeze_time (TIMESTAMP )
288+ @pytest .mark .parametrize (
289+ ("output_model_type" , "expected_file" ),
290+ [
291+ ("pydantic.BaseModel" , "class_decorators_pydantic_BaseModel.py" ),
292+ ("pydantic_v2.BaseModel" , "class_decorators_pydantic_v2_BaseModel.py" ),
293+ ("pydantic_v2.dataclass" , "class_decorators_pydantic_v2_dataclass.py" ),
294+ ("dataclasses.dataclass" , "class_decorators_dataclasses_dataclass.py" ),
295+ ("msgspec.Struct" , "class_decorators_msgspec_Struct.py" ),
296+ # Note: TypedDict is excluded because its template doesn't support decorators
297+ ],
298+ ids = [
299+ "pydantic_v1" ,
300+ "pydantic_v2" ,
301+ "pydantic_v2_dataclass" ,
302+ "dataclasses" ,
303+ "msgspec" ,
304+ ],
305+ )
306+ def test_class_decorators_all_output_types (
307+ output_file : Path , output_model_type : str , expected_file : str
308+ ) -> None :
309+ """Test --class-decorators works with all output model types that support decorators."""
310+ run_main_and_assert (
311+ input_path = DATA_PATH / "jsonschema" / "simple_frozen_test.json" ,
312+ output_path = output_file ,
313+ input_file_type = "jsonschema" ,
314+ assert_func = assert_file_content ,
315+ expected_file = expected_file ,
316+ extra_args = [
317+ "--output-model-type" ,
318+ output_model_type ,
319+ "--class-decorators" ,
320+ "@my_decorator" ,
321+ "--additional-imports" ,
322+ "my_module.my_decorator" ,
323+ ],
324+ )
325+
326+
287327@freeze_time (TIMESTAMP )
288328def test_use_attribute_docstrings (tmp_path : Path ) -> None :
289329 """Test --use-attribute-docstrings flag functionality."""
0 commit comments