50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from mongoengine import *
|
|
|
|
from tests.utils import MongoDBTestCase, get_as_pymongo
|
|
|
|
|
|
class TestBooleanField(MongoDBTestCase):
|
|
def test_storage(self):
|
|
class Person(Document):
|
|
admin = BooleanField()
|
|
|
|
person = Person(admin=True)
|
|
person.save()
|
|
self.assertEqual(
|
|
get_as_pymongo(person),
|
|
{'_id': person.id,
|
|
'admin': True})
|
|
|
|
def test_validation(self):
|
|
"""Ensure that invalid values cannot be assigned to boolean
|
|
fields.
|
|
"""
|
|
class Person(Document):
|
|
admin = BooleanField()
|
|
|
|
person = Person()
|
|
person.admin = True
|
|
person.validate()
|
|
|
|
person.admin = 2
|
|
self.assertRaises(ValidationError, person.validate)
|
|
person.admin = 'Yes'
|
|
self.assertRaises(ValidationError, person.validate)
|
|
person.admin = 'False'
|
|
self.assertRaises(ValidationError, person.validate)
|
|
|
|
def test_weirdness_constructor(self):
|
|
"""When attribute is set in contructor, it gets cast into a bool
|
|
which causes some weird behavior. We dont necessarily want to maintain this behavior
|
|
but its a known issue
|
|
"""
|
|
class Person(Document):
|
|
admin = BooleanField()
|
|
|
|
new_person = Person(admin='False')
|
|
self.assertTrue(new_person.admin)
|
|
|
|
new_person = Person(admin='0')
|
|
self.assertTrue(new_person.admin)
|