Added no_sub_classes context manager and queryset helper (#312)

This commit is contained in:
Ross Lawley
2013-05-10 15:05:16 +00:00
parent 941042d0ba
commit 5b498bd8d6
5 changed files with 108 additions and 7 deletions

View File

@@ -3322,7 +3322,7 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(q, 2)
def test_disable_inheritance_queryset(self):
def test_no_sub_classes(self):
class A(Document):
x = IntField()
y = IntField()
@@ -3332,15 +3332,34 @@ class QuerySetTest(unittest.TestCase):
class B(A):
z = IntField()
class C(B):
zz = IntField()
A.drop_collection()
A(x=10, y=20).save()
A(x=15, y=30).save()
B(x=20, y=40).save()
B(x=30, y=50).save()
C(x=40, y=60).save()
for obj in A.objects.disable_inheritance():
self.assertEqual(A.objects.no_sub_classes().count(), 2)
self.assertEqual(A.objects.count(), 5)
self.assertEqual(B.objects.no_sub_classes().count(), 2)
self.assertEqual(B.objects.count(), 3)
self.assertEqual(C.objects.no_sub_classes().count(), 1)
self.assertEqual(C.objects.count(), 1)
for obj in A.objects.no_sub_classes():
self.assertEqual(obj.__class__, A)
for obj in B.objects.no_sub_classes():
self.assertEqual(obj.__class__, B)
for obj in C.objects.no_sub_classes():
self.assertEqual(obj.__class__, C)
if __name__ == '__main__':
unittest.main()