@@ -190,15 +190,79 @@ def test_only_allows_valid_properties_in_metadata(spec_fixture):
190190 assert "not_valid" not in res
191191
192192
193- def test_field_with_choices_multiple (spec_fixture ):
194- field = fields .Str (
195- validate = [
196- validate .OneOf (["freddie" , "brian" , "john" ]),
197- validate .OneOf (["brian" , "john" , "roger" ]),
198- ]
199- )
193+ @pytest .mark .parametrize (
194+ ("validators" , "expected_enum" ),
195+ [
196+ (
197+ [
198+ validate .OneOf (["freddie" , "brian" , "john" ]),
199+ validate .OneOf (["brian" , "john" , "roger" ]),
200+ ],
201+ {"brian" , "john" },
202+ ),
203+ (
204+ [
205+ validate .OneOf (["freddie" , "brian" ]),
206+ validate .OneOf (["john" , "roger" ]),
207+ ],
208+ set (),
209+ ),
210+ ],
211+ )
212+ def test_field_with_multiple_oneof (spec_fixture , validators , expected_enum ):
213+ field = fields .Str (validate = validators )
214+ res = spec_fixture .openapi .field2property (field )
215+ assert set (res ["enum" ]) == expected_enum
216+
217+
218+ @pytest .mark .parametrize (
219+ ("validators" , "expected_enum" ),
220+ [
221+ (
222+ [
223+ validate .Equal ("brian" ),
224+ validate .Equal ("brian" ),
225+ ],
226+ {"brian" },
227+ ),
228+ (
229+ [
230+ validate .Equal ("freddie" ),
231+ validate .Equal ("brian" ),
232+ ],
233+ set (),
234+ ),
235+ ],
236+ )
237+ def test_field_with_multiple_equal (spec_fixture , validators , expected_enum ):
238+ field = fields .Str (validate = validators )
239+ res = spec_fixture .openapi .field2property (field )
240+ assert set (res ["enum" ]) == expected_enum
241+
242+
243+ @pytest .mark .parametrize (
244+ ("validators" , "expected_enum" ),
245+ [
246+ (
247+ [
248+ validate .OneOf (["freddie" , "brian" , "john" ]),
249+ validate .Equal ("brian" ),
250+ ],
251+ {"brian" },
252+ ),
253+ (
254+ [
255+ validate .OneOf (["freddie" , "brian" ]),
256+ validate .Equal ("john" ),
257+ ],
258+ set (),
259+ ),
260+ ],
261+ )
262+ def test_field_with_oneof_and_equal (spec_fixture , validators , expected_enum ):
263+ field = fields .Str (validate = validators )
200264 res = spec_fixture .openapi .field2property (field )
201- assert set (res ["enum" ]) == { "brian" , "john" }
265+ assert set (res ["enum" ]) == expected_enum
202266
203267
204268def test_field_with_additional_metadata (spec_fixture ):
0 commit comments