Fixed EmbeddedDocument validation bug
This commit is contained in:
parent
e05d31eaaf
commit
0bbf3a3d76
@ -129,6 +129,7 @@ class EmbeddedDocumentField(BaseField):
|
|||||||
if not isinstance(value, self.document):
|
if not isinstance(value, self.document):
|
||||||
raise ValidationError('Invalid embedded document instance '
|
raise ValidationError('Invalid embedded document instance '
|
||||||
'provided to an EmbeddedDocumentField')
|
'provided to an EmbeddedDocumentField')
|
||||||
|
self.document.validate(value)
|
||||||
|
|
||||||
def lookup_member(self, member_name):
|
def lookup_member(self, member_name):
|
||||||
return self.document._fields.get(member_name)
|
return self.document._fields.get(member_name)
|
||||||
|
@ -184,7 +184,7 @@ class FieldTest(unittest.TestCase):
|
|||||||
content = StringField()
|
content = StringField()
|
||||||
|
|
||||||
class PersonPreferences(EmbeddedDocument):
|
class PersonPreferences(EmbeddedDocument):
|
||||||
food = StringField()
|
food = StringField(required=True)
|
||||||
number = IntField()
|
number = IntField()
|
||||||
|
|
||||||
class Person(Document):
|
class Person(Document):
|
||||||
@ -195,9 +195,14 @@ class FieldTest(unittest.TestCase):
|
|||||||
person.preferences = 'My Preferences'
|
person.preferences = 'My Preferences'
|
||||||
self.assertRaises(ValidationError, person.validate)
|
self.assertRaises(ValidationError, person.validate)
|
||||||
|
|
||||||
|
# Check that only the right embedded doc works
|
||||||
person.preferences = Comment(content='Nice blog post...')
|
person.preferences = Comment(content='Nice blog post...')
|
||||||
self.assertRaises(ValidationError, person.validate)
|
self.assertRaises(ValidationError, person.validate)
|
||||||
|
|
||||||
|
# Check that the embedded doc is valid
|
||||||
|
person.preferences = PersonPreferences()
|
||||||
|
self.assertRaises(ValidationError, person.validate)
|
||||||
|
|
||||||
person.preferences = PersonPreferences(food='Cheese', number=47)
|
person.preferences = PersonPreferences(food='Cheese', number=47)
|
||||||
self.assertEqual(person.preferences.food, 'Cheese')
|
self.assertEqual(person.preferences.food, 'Cheese')
|
||||||
person.validate()
|
person.validate()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user