@@ -165,15 +165,28 @@ def test_happy_path(self, model_property_factory, string_property_factory, date_
165
165
additional_properties = ANY_ADDITIONAL_PROPERTY ,
166
166
)
167
167
168
- def test_model_name_conflict (self , config ):
168
+ @pytest .mark .parametrize (
169
+ "existing_names, new_name, enumerate_duplicate_model_names, expected" ,
170
+ ids = (
171
+ "name without duplicate suffix" ,
172
+ "name with duplicate suffix" ,
173
+ "name with duplicate suffix and matching existing name" ,
174
+ ),
175
+ argvalues = (
176
+ (["OtherModel" ], "OtherModel" , None , 'Attempted to generate duplicate models with name "OtherModel"' ),
177
+ (["OtherModel" ], "OtherModel" , True , "OtherModel2" ),
178
+ (["OtherModel" , "OtherModel2" ], "OtherModel" , True , "OtherModel3" ),
179
+ ),
180
+ )
181
+ def test_model_name_conflict (self , existing_names : str , new_name : str , enumerate_duplicate_model_names : Optional [str ], expected : str , config ):
169
182
from openapi_python_client .parser .properties import ModelProperty
170
183
171
184
data = oai .Schema .model_construct ()
172
- schemas = Schemas (classes_by_name = {"OtherModel" : None })
173
-
174
- err , new_schemas = ModelProperty .build (
185
+ schemas = Schemas (classes_by_name = {name : None for name in existing_names })
186
+ config = evolve ( config , enumerate_duplicate_model_names = enumerate_duplicate_model_names )
187
+ result , new_schemas = ModelProperty .build (
175
188
data = data ,
176
- name = "OtherModel" ,
189
+ name = new_name ,
177
190
schemas = schemas ,
178
191
required = True ,
179
192
parent_name = None ,
@@ -182,8 +195,13 @@ def test_model_name_conflict(self, config):
182
195
process_properties = True ,
183
196
)
184
197
185
- assert new_schemas == schemas
186
- assert err == PropertyError (detail = 'Attempted to generate duplicate models with name "OtherModel"' , data = data )
198
+ assert isinstance (result , (PropertyError , ModelProperty ))
199
+ if isinstance (result , PropertyError ):
200
+ assert new_schemas == schemas
201
+ assert result == PropertyError (detail = expected , data = data )
202
+ else : # ModelProperty
203
+ assert result .class_info .name in new_schemas .classes_by_name
204
+ assert result .class_info .name == expected
187
205
188
206
@pytest .mark .parametrize (
189
207
"name, title, parent_name, use_title_prefixing, expected" ,
0 commit comments