1+ import pytest
12import typing as t
23import os
34from enum import Enum , Flag
@@ -77,17 +78,19 @@ def test_admin_change_display_bug35(self):
7778
7879
7980class _GenericAdminFormTest (StaticLiveServerTestCase ):
80- MODEL_CLASS : Model
81+ MODEL_CLASS : t . Type [ Model ]
8182
8283 HEADLESS = True
8384
8485 __test__ = False
8586
86- def enum (self , field ):
87- return self .MODEL_CLASS ._meta .get_field (field ).enum
87+ def enum (self , field : str ) -> t .Type [Enum ]:
88+ enum = t .cast (EnumField , self .MODEL_CLASS ._meta .get_field (field )).enum
89+ assert enum
90+ return enum
8891
8992 @property
90- def changes (self ) -> t .List [t .Dict [str , Enum ]]:
93+ def changes (self ) -> t .List [t .Dict [str , t . Any ]]:
9194 # must implement
9295 return [{}]
9396
@@ -205,10 +208,10 @@ def verify_changes(self, obj: Model, expected: t.Dict[str, t.Any]):
205208 )
206209 except AssertionError :
207210 if connection .vendor == "oracle" and issubclass (
208- field .enum , Flag
211+ self .enum ( field . name ) , Flag
209212 ):
210213 # TODO - why is oracle returning 0 instead of None?
211- self .assertEqual (obj_val , field .enum (0 ))
214+ self .assertEqual (obj_val , self .enum ( field . name ) (0 ))
212215 else :
213216 raise
214217 else :
@@ -287,7 +290,7 @@ class TestEnumTesterAdminForm(EnumTypeMixin, _GenericAdminFormTest):
287290 __test__ = True
288291
289292 @property
290- def changes (self ) -> t .Dict [str , Enum ]:
293+ def changes (self ) -> t .List [ t . Dict [str , t . Any ] ]:
291294 return [
292295 {},
293296 {
@@ -319,7 +322,7 @@ class TestNullBlankAdminBehavior(_GenericAdminFormTest):
319322 __test__ = True
320323
321324 @property
322- def changes (self ) -> t .Dict [str , Enum ]:
325+ def changes (self ) -> t .List [ t . Dict [str , t . Any ] ]:
323326 return [
324327 {"required" : ExternEnum .THREE , "blank" : ExternEnum .TWO },
325328 {
@@ -346,13 +349,16 @@ def changes(self) -> t.Dict[str, Enum]:
346349 ]
347350
348351
352+ @pytest .mark .skipif (
353+ connection .vendor == "oracle" , reason = "Null/blank form behavior on oracle broken"
354+ )
349355class TestNullableBlankAdminBehavior (_GenericAdminFormTest ):
350356 MODEL_CLASS = NullableBlankFormTester
351357 __test__ = True
352358 HEADLESS = True
353359
354360 @property
355- def changes (self ) -> t .Dict [str , Enum ]:
361+ def changes (self ) -> t .List [ t . Dict [str , t . Any ] ]:
356362 return [
357363 {"required" : NullableExternEnum .THREE , "blank" : NullableExternEnum .TWO },
358364 {
@@ -379,13 +385,16 @@ def changes(self) -> t.Dict[str, Enum]:
379385 ]
380386
381387
388+ @pytest .mark .skipif (
389+ connection .vendor == "oracle" , reason = "Null/blank form behavior on oracle broken"
390+ )
382391class TestNullableStrAdminBehavior (_GenericAdminFormTest ):
383392 MODEL_CLASS = NullableStrFormTester
384393 __test__ = True
385394 HEADLESS = True
386395
387396 @property
388- def changes (self ) -> t .Dict [str , Enum ]:
397+ def changes (self ) -> t .List [ t . Dict [str , t . Any ] ]:
389398 return [
390399 {"required" : NullableStrEnum .STR1 , "blank" : NullableStrEnum .STR2 },
391400 {
@@ -417,7 +426,7 @@ class TestBug53AdminBehavior(_GenericAdminFormTest):
417426 __test__ = True
418427
419428 @property
420- def changes (self ) -> t .Dict [str , Enum ]:
429+ def changes (self ) -> t .List [ t . Dict [str , t . Any ] ]:
421430 return [
422431 {
423432 "char_blank_null_false" : StrTestEnum .V2 ,
0 commit comments