Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def load_module(module_name, script_file):
except:
pass

test_requirements = ['coverage', 'flake8', 'mongomock', 'nose', 'rednose']
test_requirements = ['coverage', 'mongomock', 'nose', 'rednose']

setup(
name='flask-mongoengine',
Expand Down
30 changes: 24 additions & 6 deletions tests/test_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,9 @@ class Dog(db.Document):
class DogOwner(db.Document):
dog = db.ReferenceField(Dog)

DogOwnerForm = model_form(DogOwner)
DogOwnerForm = model_form(DogOwner, field_args={
'dog': { 'allow_blank': True }
})

dog = Dog(name="fido")
dog.save()
Expand All @@ -254,6 +256,15 @@ class DogOwner(db.Document):
self.assertEqual(wtforms.widgets.Select, type(form.dog.widget))
self.assertFalse(form.dog.widget.multiple)

# Validate the options - should contain a dog (selected) and a
# blank option there should be an extra blank option.
choices = list(form.dog)
self.assertEqual(len(choices), 2)
self.assertFalse(choices[0].checked)
self.assertEqual(choices[0].data, '__None')
self.assertTrue(choices[1].checked)
self.assertEqual(choices[1].data, dog.pk)

# Validate selecting one item
form = DogOwnerForm(MultiDict({
'dog': dog.id,
Expand All @@ -276,7 +287,9 @@ class Dog(db.Document):
class DogOwner(db.Document):
dogs = db.ListField(db.ReferenceField(Dog))

DogOwnerForm = model_form(DogOwner)
DogOwnerForm = model_form(DogOwner, field_args={
'dogs': { 'allow_blank': True }
})

dogs = [Dog(name="fido"), Dog(name="rex")]
for dog in dogs:
Expand All @@ -288,11 +301,16 @@ class DogOwner(db.Document):
self.assertEqual(wtforms.widgets.Select, type(form.dogs.widget))
self.assertTrue(form.dogs.widget.multiple)

# Validate if both dogs are selected
# Validate the options - both dogs should be selected and
# there should be an extra blank option.
choices = list(form.dogs)
self.assertEqual(len(choices), 2)
self.assertTrue(choices[0].checked)
self.assertEqual(len(choices), 3)
self.assertFalse(choices[0].checked)
self.assertEqual(choices[0].data, '__None')
self.assertTrue(choices[1].checked)
self.assertEqual(choices[1].data, dogs[0].pk)
self.assertTrue(choices[2].checked)
self.assertEqual(choices[2].data, dogs[1].pk)

# Validate selecting two items
form = DogOwnerForm(MultiDict({
Expand All @@ -302,7 +320,7 @@ class DogOwner(db.Document):

# Validate selecting none actually empties the list
form = DogOwnerForm(MultiDict({
'dogs': [],
'dogs': '__None',
}), dogs=dogs)
self.assertEqual(form.dogs.data, None)

Expand Down