def test_dynamic_enum(self): FooEnum = Enum('FooEnum') FooEnum.add_item(Item(10, 'a', "Item A")) FooEnum.add_item(Item(20, 'b', "Item B")) self.assertEqual(len(FooEnum), 2) self.assertEqual(FooEnum.A.slug, 'a') self.assertEqual(FooEnum.B.display, "Item B") self.assertEqual(FooEnum.from_value(10).slug, 'a')
def test_instance_based_enum(self): FooEnum = Enum( 'FooEnum', Item(10, 'a', "Item A"), Item(20, 'b', "Item B"), ) self.assertEqual(len(FooEnum), 2) self.assertEqual(FooEnum.A.slug, 'a') self.assertEqual(FooEnum.B.display, "Item B") self.assertEqual(FooEnum.from_value(10).slug, 'a')
def test_simple_registry_enum(self): FooEnum = Enum('FooEnum') class A(Item): __enum__ = FooEnum value = 10 display = "Item A" class B(Item): __enum__ = FooEnum value = 20 display = "Item B" self.assertEqual(len(FooEnum), 2) self.assertEqual(FooEnum.A.slug, 'A') self.assertEqual(FooEnum.B.display, "Item B") self.assertEqual(FooEnum.from_value(10).slug, 'A')
def setUp(self): super(EnumTests, self).setUp() FooEnum = Enum( 'FooEnum', Item(10, 'a', "Item A"), Item(20, 'b', "Item B"), ) LargeEnum = Enum( 'LargeEnum', Item(10, 'item_a', "Item A"), Item(20, 'item_b', "Item B"), Item(30, 'item_c', "Item C"), Item(40, 'item_d', "Item D"), Item(50, 'item_e', "Item E"), ) self.enum = FooEnum self.large_enum = LargeEnum
def test_simple_registry_enum_with_explicit_slugs(self): FooEnum = Enum('FooEnum') class A(Item): __enum__ = FooEnum value = 10 slug = 'item_a' display = "Item A" class B(Item): __enum__ = FooEnum value = 20 slug = 'item_b' display = "Item B" self.assertEqual(len(FooEnum), 2) self.assertEqual(FooEnum.ITEM_A.slug, 'item_a') self.assertEqual(FooEnum.ITEM_B.display, "Item B") self.assertEqual(FooEnum.from_value(10).slug, 'item_a')
def test_registry_without_parent(self): FooEnum = Enum('FooEnum') class FooEnumItem(Item): __enum__ = FooEnum def display_extended(self): return "%s (%s)" % (self.display, self.value) class A(FooEnumItem): value = 10 display = "Item A" class B(FooEnumItem): value = 20 display = "Item B" self.assertEqual(len(FooEnum), 2) self.assertEqual(FooEnum.A.slug, 'A') self.assertEqual(FooEnum.B.display, "Item B") self.assertEqual(FooEnum.from_value(10).slug, 'A') self.assertEqual(FooEnum.A.display_extended(), "Item A (10)")
def test_slug_missing_with_explicit_slugs_s(self): FooEnum = Enum('FooEnum') # Should be able to create helpers which have neither slug nor value class FooItem(Item): __enum__ = FooEnum self.assertEqual(len(FooEnum), 0) with self.assertRaises(TypeError) as cm: class BadItem(Item): __enum__ = FooEnum value = 20 display = "Item B" self.assertEqual( "'BadItem' class must have a slug attribute", str(cm.exception), "Wrong error message for missing slug", ) self.assertEqual(len(FooEnum), 0)
from django_enumfield import Enum, Item SecurityEventEnum = Enum( 'SecurityEventEnum', Item(10, 'possible_replay_attack', "An expired HMAC was used"), Item(20, 'useragent', "An incorrect useragent accessed the API"), Item(30, 'sentry_ipspoof', "An incorrect IP used the Sentry useragent"), Item(40, 'gameip_missmatch', "An incorrect IP accessed the game server API"), Item(50, 'no_body', "A request was received with no body"), Item(60, 'associated_reverse_engineer', "An account was marked as an RE by association"), Item(70, 'alt_detected', "An account was detected as an alternate account"), Item(80, 'invalid_data', "Invalid data was sent to the server"))
def test_dynamic_enum_rejects_duplicate_value(self): FooEnum = Enum('FooEnum') FooEnum.add_item(Item(10, 'a', "Item A")) with self.assertRaises(ValueError): FooEnum.add_item(Item(10, 'b', "Item B"))
from django_enumfield import Enum, Item ConsultationStateEnum = Enum('ConsultationStateEnum', Item(10, 'open', 'Open consultation'), Item(20, 'closed', 'Closed consultation'), Item(30, 'outcome', 'Consultation outcome'), )
def test_dynamic_enum_rejects_duplicate_slug(self): FooEnum = Enum('FooEnum') FooEnum.add_item(Item(10, 'a', "Item A")) with self.assertRaises(ValueError): FooEnum.add_item(Item(20, 'a', "Item B"))