Skip to content

Commit a1abde7

Browse files
committed
add tests
1 parent 5435ba7 commit a1abde7

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tests/validators/test_enums.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
import re
23
import sys
34
from decimal import Decimal
@@ -274,6 +275,45 @@ class MyEnum(Enum):
274275
assert v.validate_json('[1, 2]') is MyEnum.a
275276

276277

278+
def test_plain_enum_datetime():
279+
class MyEnum(Enum):
280+
a = datetime.datetime.fromisoformat('2024-01-01T00:00:00Z')
281+
282+
v = SchemaValidator(core_schema.enum_schema(MyEnum, list(MyEnum.__members__.values())))
283+
assert v.validate_python(datetime.datetime.fromisoformat('2024-01-01T00:00:00Z')) is MyEnum.a
284+
assert v.validate_json('"2024-01-01T00:00:00Z"') is MyEnum.a
285+
286+
287+
def test_plain_enum_complex():
288+
class MyEnum(Enum):
289+
a = complex(1, 2)
290+
291+
v = SchemaValidator(core_schema.enum_schema(MyEnum, list(MyEnum.__members__.values())))
292+
assert v.validate_python(complex(1, 2)) is MyEnum.a
293+
assert v.validate_json('"1+2j"') is MyEnum.a
294+
295+
296+
def test_plain_enum_identical_serialized_form():
297+
class MyEnum(Enum):
298+
tuple_ = 1, 2
299+
list_ = [1, 2]
300+
301+
v = SchemaValidator(core_schema.enum_schema(MyEnum, list(MyEnum.__members__.values())))
302+
assert v.validate_python((1, 2)) is MyEnum.tuple_
303+
assert v.validate_python([1, 2]) is MyEnum.list_
304+
assert v.validate_json('[1,2]') is MyEnum.tuple_
305+
306+
# Change the order of `a` and `b` in MyEnum2; validate_json should pick [1, 2] this time
307+
class MyEnum2(Enum):
308+
list_ = [1, 2]
309+
tuple_ = 1, 2
310+
311+
v = SchemaValidator(core_schema.enum_schema(MyEnum2, list(MyEnum2.__members__.values())))
312+
assert v.validate_python((1, 2)) is MyEnum2.tuple_
313+
assert v.validate_python([1, 2]) is MyEnum2.list_
314+
assert v.validate_json('[1,2]') is MyEnum2.list_
315+
316+
277317
def test_plain_enum_empty():
278318
class MyEnum(Enum):
279319
pass

0 commit comments

Comments
 (0)