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_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_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)