Skip to content

Commit 7a9e3d8

Browse files
committed
EM-1209 Test Enum explicitely
1 parent d5922a3 commit 7a9e3d8

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

tests/base_model_store_tests.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ class SomeEnum(str, Enum):
108108
FIELD_TWO = "two"
109109

110110

111+
@dataclass
112+
class NestedModelWithEnum:
113+
some_enum: SomeEnum
114+
some_str: str
115+
116+
111117
@dataclass
112118
class MyDerivedModel(MyBaseModel):
113119
id: str
@@ -127,7 +133,12 @@ class MyDerivedModel(MyBaseModel):
127133
union_date: Union[datetime, None] = field(default_factory=datetime.utcnow)
128134
bytes_type: Union[bytes, None] = None
129135
bytearray_type: Union[bytearray, None] = None
130-
some_enum: SomeEnum = field(default_factory=lambda: SomeEnum.FIELD_ONE)
136+
some_enum: SomeEnum = SomeEnum.FIELD_ONE
137+
nested_enum: NestedModelWithEnum = field(
138+
default_factory=lambda: NestedModelWithEnum(
139+
some_str="string", some_enum=SomeEnum.FIELD_ONE
140+
)
141+
)
131142

132143
def get_key(self) -> _MyModelKey:
133144
return _MyModelKey(my_pk=f"AA#{self.id}", my_sk=self.sk_field or "#")
@@ -498,6 +509,8 @@ async def test_serialize_deserialize_model(store: MyModelStore):
498509

499510
assert isinstance(serialized["some_enum"], str)
500511
assert serialized["some_enum"] == "one"
512+
assert isinstance(serialized["nested_enum"], dict)
513+
assert serialized["nested_enum"]["some_enum"] == "one"
501514

502515
assert model.none_string is None
503516
assert "none_thing" not in serialized
@@ -517,6 +530,23 @@ async def test_serialize_deserialize_model(store: MyModelStore):
517530
assert deserialized.today == model.today
518531
assert isinstance(deserialized.some_enum, SomeEnum)
519532
assert deserialized.some_enum == SomeEnum.FIELD_ONE
533+
assert isinstance(deserialized.nested_enum, NestedModelWithEnum)
534+
assert isinstance(deserialized.nested_enum.some_enum, SomeEnum)
535+
assert deserialized.nested_enum.some_enum == SomeEnum.FIELD_ONE
536+
537+
538+
async def test_nested_enum_using_deserialise_model_function():
539+
enum_test_dict = {
540+
"some_str": "test string",
541+
"some_enum": "two",
542+
}
543+
544+
deserialised_model = BaseModelStore.deserialise_model(enum_test_dict, NestedModelWithEnum)
545+
546+
assert isinstance(deserialised_model, NestedModelWithEnum)
547+
assert isinstance(deserialised_model.some_enum, SomeEnum)
548+
assert deserialised_model.some_enum == SomeEnum.FIELD_TWO
549+
assert deserialised_model.some_str == "test string"
520550

521551

522552
async def test_transact_get_put_model(store: MyModelStore):

0 commit comments

Comments
 (0)