def test_to_internal_value_returns_list_of_enums_when_value_is_list_of_ints( self): field = MultipleEnumChoiceField(enum_class=IntTestEnum) result = field.to_internal_value(['1', '2']) self.assertEqual([IntTestEnum.FIRST, IntTestEnum.SECOND], result)
def test_to_internal_value_returns_list_of_enums_when_value_is_list_of_strings( self): field = MultipleEnumChoiceField(enum_class=CharTestEnum) result = field.to_internal_value(['first', 'second']) self.assertEqual([CharTestEnum.FIRST, CharTestEnum.SECOND], result)
def test_to_internal_value_fails_when_not_allowed_empty_field_gets_empty_list( self): field = MultipleEnumChoiceField(enum_class=IntTestEnum) with self.assertRaisesMessage(ValidationError, 'This selection may not be empty.'): field.to_internal_value([])
def test_to_internal_value_fails_when_value_is_not_list(self): field = MultipleEnumChoiceField(enum_class=IntTestEnum) with self.assertRaisesMessage( ValidationError, 'Expected a list of items but got type "int".'): field.to_internal_value(5)
def test_to_representation_returns_list_of_strings(self): field = MultipleEnumChoiceField(enum_class=CharTestEnum) result = field.to_representation( [CharTestEnum.FIRST, CharTestEnum.SECOND]) self.assertEqual(['first', 'second'], result)
def test_to_representation_returns_list_of_ints(self): field = MultipleEnumChoiceField(enum_class=IntTestEnum) result = field.to_representation( [IntTestEnum.FIRST, IntTestEnum.SECOND]) self.assertEqual(['1', '2'], result)
class Serializer(serializers.Serializer): enumeration = MultipleEnumChoiceField(enum_class=CharTestEnum)
class Serializer(serializers.Serializer): enumeration = MultipleEnumChoiceField(enum_class=CharTestEnum, allow_empty=True)
class MultipleMySerializer(serializers.Serializer): enumerated_field = MultipleEnumChoiceField(MyEnum)