[fix]validation list field with multi choice values

This commit is contained in:
Bo.Yi
2017-07-06 14:57:03 +08:00
parent a8d6e59a7a
commit e6a30f899c
3 changed files with 27 additions and 3 deletions

View File

@@ -920,6 +920,12 @@ class FieldTest(MongoDBTestCase):
def test_list_validation(self):
"""Ensure that a list field only accepts lists with valid elements."""
AccessLevelChoices = (
('a', u'Administrator'),
('b', u'Manager'),
('c', u'Staff'),
)
class User(Document):
pass
@@ -932,6 +938,7 @@ class FieldTest(MongoDBTestCase):
tags = ListField(StringField())
authors = ListField(ReferenceField(User))
generic = ListField(GenericReferenceField())
access_list = ListField(required=False, default=[], choices=AccessLevelChoices, display_sep=u',')
User.drop_collection()
BlogPost.drop_collection()
@@ -949,6 +956,17 @@ class FieldTest(MongoDBTestCase):
post.tags = ('fun', 'leisure')
post.validate()
post.access_list = 'a,b'
self.assertRaises(ValidationError, post.validate())
post.access_list = ['c', 'd']
self.assertRaises(ValidationError, post.validate())
post.access_list = ['a', 'b']
post.validate()
self.assertEqual(post.get_access_list_display(), u'Administrator,Manager')
post.comments = ['a']
self.assertRaises(ValidationError, post.validate)
post.comments = 'yay'