Added unit test for EmbeddedDocument

This commit is contained in:
Harry Marr 2009-11-17 01:48:43 +00:00
parent 5a87534c22
commit 0bb0ec0114
2 changed files with 15 additions and 3 deletions

View File

@ -1,4 +1,5 @@
class ValidationError(Exception): class ValidationError(Exception):
pass pass
@ -98,9 +99,12 @@ class TopLevelDocumentMetaclass(DocumentMetaclass):
""" """
def __new__(cls, name, bases, attrs): def __new__(cls, name, bases, attrs):
super_new = super(TopLevelDocumentMetaclass, cls).__new__
# Classes defined in this package are abstract and should not have # Classes defined in this package are abstract and should not have
# their own metadata with DB collection, etc. # their own metadata with DB collection, etc.
super_new = super(TopLevelDocumentMetaclass, cls).__new__ # __metaclass__ is only set on the class with the __metaclass__
# attribute (i.e. it is not set on subclasses). This differentiates
# 'real' documents from the 'Document' class
if attrs.get('__metaclass__') == TopLevelDocumentMetaclass: if attrs.get('__metaclass__') == TopLevelDocumentMetaclass:
return super_new(cls, name, bases, attrs) return super_new(cls, name, bases, attrs)

View File

@ -1,6 +1,6 @@
import unittest import unittest
from mongomap import Document, StringField, IntField from mongomap import *
class DocumentTest(unittest.TestCase): class DocumentTest(unittest.TestCase):
@ -61,6 +61,14 @@ class DocumentTest(unittest.TestCase):
person['name'] = 'Another User' person['name'] = 'Another User'
self.assertEquals(person['name'], 'Another User') self.assertEquals(person['name'], 'Another User')
def test_embedded_document(self):
"""Ensure that embedded documents are set up correctly.
"""
class Comment(EmbeddedDocument):
content = StringField()
self.assertTrue('content' in Comment._fields)
self.assertFalse(hasattr(Comment, '_meta'))
if __name__ == '__main__': if __name__ == '__main__':