Skip to content

Commit 37b53c1

Browse files
committed
added tests for serialising Enum instances
1 parent 4f4b443 commit 37b53c1

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

tests/apps/migrations/auto/test_serialisation.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from unittest import TestCase
33

44
from piccolo.apps.migrations.auto.serialisation import serialise_params
5+
from piccolo.columns.base import OnDelete
56
from piccolo.columns.choices import Choice
67
from piccolo.columns.column_types import Varchar
78
from piccolo.columns.defaults import DateNow, TimeNow, TimestampNow, UUID4
@@ -148,3 +149,36 @@ class Choices(Enum):
148149
"from enum import Enum",
149150
},
150151
)
152+
153+
def test_custom_enum_instance(self):
154+
"""
155+
Make sure custom Enum instances can be serialised properly. An example
156+
is when a user defines a choices Enum, and then sets the default to
157+
one of those choices.
158+
"""
159+
160+
class Choices(Enum):
161+
a = 1
162+
b = 2
163+
164+
serialised = serialise_params(params={"default": Choices.a})
165+
166+
self.assertEqual(serialised.params["default"], 1)
167+
self.assertEqual(serialised.extra_imports, [])
168+
self.assertEqual(serialised.extra_definitions, [])
169+
170+
def test_builtin_enum_instance(self):
171+
"""
172+
Make sure Enum instances defiend in Piccolo can be serialised properly
173+
- for example, with on_delete.
174+
"""
175+
serialised = serialise_params(params={"on_delete": OnDelete.cascade})
176+
177+
self.assertEqual(
178+
serialised.params["on_delete"].__repr__(), "OnDelete.cascade"
179+
)
180+
self.assertEqual(
181+
[i.__repr__() for i in serialised.extra_imports],
182+
["from piccolo.columns.base import OnDelete"],
183+
)
184+
self.assertEqual(serialised.extra_definitions, [])

0 commit comments

Comments
 (0)