parent
c24bc77c17
commit
e04e5f42ef
@ -4,22 +4,13 @@ import pymongo
|
|||||||
import pickle
|
import pickle
|
||||||
import weakref
|
import weakref
|
||||||
|
|
||||||
|
from fixtures import Base, Mixin, PickleEmbedded, PickleTest
|
||||||
|
|
||||||
from mongoengine import *
|
from mongoengine import *
|
||||||
from mongoengine.base import BaseField
|
from mongoengine.base import BaseField
|
||||||
from mongoengine.connection import _get_db
|
from mongoengine.connection import _get_db
|
||||||
|
|
||||||
|
|
||||||
class PickleEmbedded(EmbeddedDocument):
|
|
||||||
date = DateTimeField(default=datetime.now)
|
|
||||||
|
|
||||||
|
|
||||||
class PickleTest(Document):
|
|
||||||
number = IntField()
|
|
||||||
string = StringField(choices=(('One', '1'), ('Two', '2')))
|
|
||||||
embedded = EmbeddedDocumentField(PickleEmbedded)
|
|
||||||
lists = ListField(StringField())
|
|
||||||
|
|
||||||
|
|
||||||
class DocumentTest(unittest.TestCase):
|
class DocumentTest(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -108,6 +99,51 @@ class DocumentTest(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
self.assertEqual(Animal._get_subclasses(), animal_subclasses)
|
self.assertEqual(Animal._get_subclasses(), animal_subclasses)
|
||||||
|
|
||||||
|
def test_external_super_and_sub_classes(self):
|
||||||
|
"""Ensure that the correct list of sub and super classes is assembled.
|
||||||
|
when importing part of the model
|
||||||
|
"""
|
||||||
|
class Animal(Base): pass
|
||||||
|
class Fish(Animal): pass
|
||||||
|
class Mammal(Animal): pass
|
||||||
|
class Human(Mammal): pass
|
||||||
|
class Dog(Mammal): pass
|
||||||
|
|
||||||
|
mammal_superclasses = {'Base': Base, 'Base.Animal': Animal}
|
||||||
|
self.assertEqual(Mammal._superclasses, mammal_superclasses)
|
||||||
|
|
||||||
|
dog_superclasses = {
|
||||||
|
'Base': Base,
|
||||||
|
'Base.Animal': Animal,
|
||||||
|
'Base.Animal.Mammal': Mammal,
|
||||||
|
}
|
||||||
|
self.assertEqual(Dog._superclasses, dog_superclasses)
|
||||||
|
|
||||||
|
animal_subclasses = {
|
||||||
|
'Base.Animal.Fish': Fish,
|
||||||
|
'Base.Animal.Mammal': Mammal,
|
||||||
|
'Base.Animal.Mammal.Dog': Dog,
|
||||||
|
'Base.Animal.Mammal.Human': Human
|
||||||
|
}
|
||||||
|
self.assertEqual(Animal._get_subclasses(), animal_subclasses)
|
||||||
|
|
||||||
|
mammal_subclasses = {
|
||||||
|
'Base.Animal.Mammal.Dog': Dog,
|
||||||
|
'Base.Animal.Mammal.Human': Human
|
||||||
|
}
|
||||||
|
self.assertEqual(Mammal._get_subclasses(), mammal_subclasses)
|
||||||
|
|
||||||
|
Base.drop_collection()
|
||||||
|
|
||||||
|
h = Human()
|
||||||
|
h.save()
|
||||||
|
|
||||||
|
self.assertEquals(Human.objects.count(), 1)
|
||||||
|
self.assertEquals(Mammal.objects.count(), 1)
|
||||||
|
self.assertEquals(Animal.objects.count(), 1)
|
||||||
|
self.assertEquals(Base.objects.count(), 1)
|
||||||
|
Base.drop_collection()
|
||||||
|
|
||||||
def test_polymorphic_queries(self):
|
def test_polymorphic_queries(self):
|
||||||
"""Ensure that the correct subclasses are returned from a query"""
|
"""Ensure that the correct subclasses are returned from a query"""
|
||||||
class Animal(Document): pass
|
class Animal(Document): pass
|
||||||
|
26
tests/fixtures.py
Normal file
26
tests/fixtures.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
import pymongo
|
||||||
|
|
||||||
|
from mongoengine import *
|
||||||
|
from mongoengine.base import BaseField
|
||||||
|
from mongoengine.connection import _get_db
|
||||||
|
|
||||||
|
|
||||||
|
class PickleEmbedded(EmbeddedDocument):
|
||||||
|
date = DateTimeField(default=datetime.now)
|
||||||
|
|
||||||
|
|
||||||
|
class PickleTest(Document):
|
||||||
|
number = IntField()
|
||||||
|
string = StringField(choices=(('One', '1'), ('Two', '2')))
|
||||||
|
embedded = EmbeddedDocumentField(PickleEmbedded)
|
||||||
|
lists = ListField(StringField())
|
||||||
|
|
||||||
|
|
||||||
|
class Mixin(object):
|
||||||
|
number = IntField()
|
||||||
|
string = StringField(choices=(('One', '1'), ('Two', '2')))
|
||||||
|
|
||||||
|
|
||||||
|
class Base(Document):
|
||||||
|
pass
|
Loading…
x
Reference in New Issue
Block a user