@@ -975,3 +975,62 @@ def test_parse_all_parameters_strict_nullable() -> None:
975975 assert len (fields ) == 2
976976 assert fields [0 ].nullable is True
977977 assert fields [1 ].nullable is False
978+
979+
980+ def test_openapi_parser_with_request_bodies_scope () -> None :
981+ """Test parsing OpenAPI with requestBodies scope generates models from components/requestBodies."""
982+ parser = OpenAPIParser (
983+ data_model_field_type = DataModelFieldBase ,
984+ source = Path (DATA_PATH / "request_bodies_scope.yaml" ),
985+ openapi_scopes = [OpenAPIScope .RequestBodies ],
986+ )
987+ result = parser .parse ()
988+ assert "CreatePet" in result
989+ assert "name: Optional[str]" in result
990+ assert "age: Optional[int]" in result
991+
992+
993+ def test_openapi_parser_with_request_bodies_scope_ref () -> None :
994+ """Test parsing OpenAPI with requestBodies scope handles $ref in schema."""
995+ parser = OpenAPIParser (
996+ data_model_field_type = DataModelFieldBase ,
997+ source = Path (DATA_PATH / "request_bodies_scope.yaml" ),
998+ openapi_scopes = [OpenAPIScope .RequestBodies , OpenAPIScope .Schemas ],
999+ )
1000+ result = parser .parse ()
1001+ assert "UpdatePet" in result
1002+ assert "PetUpdate" in result
1003+
1004+
1005+ def test_openapi_parser_with_request_bodies_scope_empty () -> None :
1006+ """Test parsing OpenAPI with requestBodies scope when requestBodies is empty."""
1007+ parser = OpenAPIParser (
1008+ data_model_field_type = DataModelFieldBase ,
1009+ source = Path (DATA_PATH / "request_bodies_scope_empty.yaml" ),
1010+ openapi_scopes = [OpenAPIScope .RequestBodies ],
1011+ )
1012+ result = parser .parse ()
1013+ assert result in ({}, "" )
1014+
1015+
1016+ def test_openapi_parser_with_request_bodies_scope_no_schema () -> None :
1017+ """Test parsing OpenAPI with requestBodies scope skips content without schema."""
1018+ parser = OpenAPIParser (
1019+ data_model_field_type = DataModelFieldBase ,
1020+ source = Path (DATA_PATH / "request_bodies_scope.yaml" ),
1021+ openapi_scopes = [OpenAPIScope .RequestBodies ],
1022+ )
1023+ result = parser .parse ()
1024+ assert "EmptyContent" not in result
1025+
1026+
1027+ def test_openapi_parser_with_request_bodies_scope_body_ref () -> None :
1028+ """Test parsing OpenAPI with requestBodies scope handles $ref at requestBody level."""
1029+ parser = OpenAPIParser (
1030+ data_model_field_type = DataModelFieldBase ,
1031+ source = Path (DATA_PATH / "request_bodies_scope_with_ref.yaml" ),
1032+ openapi_scopes = [OpenAPIScope .RequestBodies ],
1033+ )
1034+ result = parser .parse ()
1035+ assert "CreatePet" in result or "BasePet" in result
1036+ assert "name: Optional[str]" in result
0 commit comments