Created ObjectIdField, removed object_id field parameter

This commit is contained in:
Harry Marr
2009-11-18 21:38:41 +00:00
parent ff5e5addf5
commit 94be32b387
5 changed files with 56 additions and 18 deletions

View File

@@ -31,6 +31,7 @@ class DocumentTest(unittest.TestCase):
self.assertEqual(Person._fields['name'], name_field)
self.assertEqual(Person._fields['age'], age_field)
self.assertFalse('non_field' in Person._fields)
self.assertTrue('_id' in Person._fields)
# Test iteration over fields
fields = list(Person())
self.assertTrue('name' in fields and 'age' in fields)
@@ -67,7 +68,8 @@ class DocumentTest(unittest.TestCase):
person['name'] = 'Another User'
self.assertEquals(person['name'], 'Another User')
self.assertEquals(len(person), 2)
# Length = length(assigned fields + _id)
self.assertEquals(len(person), 3)
self.assertTrue('age' in person)
person.age = None
@@ -81,6 +83,7 @@ class DocumentTest(unittest.TestCase):
content = StringField()
self.assertTrue('content' in Comment._fields)
self.assertFalse('_id' in Comment._fields)
self.assertFalse(hasattr(Comment, '_meta'))
def test_save(self):
@@ -95,6 +98,18 @@ class DocumentTest(unittest.TestCase):
self.assertEqual(person_obj['name'], 'Test User')
self.assertEqual(person_obj['age'], 30)
def test_save_custom_id(self):
"""Ensure that a document may be saved with a custom _id.
"""
# Create person object and save it to the database
person = self.Person(name='Test User', age=30,
_id='497ce96f395f2f052a494fd4')
person.save()
# Ensure that the object is in the database with the correct _id
collection = self.db[self.Person._meta['collection']]
person_obj = collection.find_one({'name': 'Test User'})
self.assertEqual(str(person_obj['_id']), '497ce96f395f2f052a494fd4')
def test_save_embedded_document(self):
"""Ensure that a document with an embedded document field may be
saved in the database.

View File

@@ -24,7 +24,7 @@ class FieldTest(unittest.TestCase):
"""Ensure that required field constraints are enforced.
"""
class Person(Document):
name = StringField(object_id=True)
name = StringField(required=True)
age = IntField(required=True)
userid = StringField()
@@ -36,6 +36,18 @@ class FieldTest(unittest.TestCase):
self.assertRaises(ValidationError, person.__setattr__, 'age', None)
person.userid = None
def test_object_id_validation(self):
"""Ensure that invalid values cannot be assigned to string fields.
"""
class Person(Document):
name = StringField()
person = Person(name='Test User')
self.assertRaises(AttributeError, getattr, person, '_id')
self.assertRaises(ValidationError, person.__setattr__, '_id', 47)
self.assertRaises(ValidationError, person.__setattr__, '_id', 'abc')
person._id = '497ce96f395f2f052a494fd4'
def test_string_validation(self):
"""Ensure that invalid values cannot be assigned to string fields.
"""