Add BaseEnumField valid_values introspection
The new class property allows introspection of the valid values, used to ease testing by random field generation. Change-Id: I749bc0acea4947450b4c02dca932a05a7a4ad534
This commit is contained in:
parent
15d96379aa
commit
0c7ec37d3a
|
@ -291,6 +291,10 @@ class Enum(String):
|
|||
self._valid_values = valid_values
|
||||
super(Enum, self).__init__(**kwargs)
|
||||
|
||||
@property
|
||||
def valid_values(self):
|
||||
return tuple(self._valid_values)
|
||||
|
||||
def coerce(self, obj, attr, value):
|
||||
if value not in self._valid_values:
|
||||
msg = _("Field value %s is invalid") % value
|
||||
|
@ -683,7 +687,7 @@ class BaseEnumField(AutoTypedField):
|
|||
super(BaseEnumField, self).__init__(**kwargs)
|
||||
|
||||
def __repr__(self):
|
||||
valid_values = self._type._valid_values
|
||||
valid_values = self._type.valid_values
|
||||
args = {
|
||||
'nullable': self._nullable,
|
||||
'default': self._default,
|
||||
|
@ -693,6 +697,11 @@ class BaseEnumField(AutoTypedField):
|
|||
','.join(['%s=%s' % (k, v)
|
||||
for k, v in sorted(args.items())]))
|
||||
|
||||
@property
|
||||
def valid_values(self):
|
||||
"""Return the list of valid values for the field."""
|
||||
return self._type.valid_values
|
||||
|
||||
|
||||
class EnumField(BaseEnumField):
|
||||
'''Anonymous enum field type
|
||||
|
@ -878,7 +887,7 @@ class ListOfEnumField(AutoTypedField):
|
|||
super(ListOfEnumField, self).__init__(**kwargs)
|
||||
|
||||
def __repr__(self):
|
||||
valid_values = self._type._element_type._type._valid_values
|
||||
valid_values = self._type._element_type._type.valid_values
|
||||
args = {
|
||||
'nullable': self._nullable,
|
||||
'default': self._default,
|
||||
|
|
|
@ -252,6 +252,10 @@ class TestBaseEnum(TestField):
|
|||
field2 = FakeEnumAltField()
|
||||
self.assertNotEqual(str(field1), str(field2))
|
||||
|
||||
def test_valid_values(self):
|
||||
self.assertEqual(self.field.valid_values,
|
||||
FakeEnum.ALL)
|
||||
|
||||
|
||||
class TestEnum(TestField):
|
||||
def setUp(self):
|
||||
|
|
Loading…
Reference in New Issue