def test_no_subclass_context_manager_does_not_swallow_exception(self): class User(Document): name = StringField() with self.assertRaises(TypeError): with no_sub_classes(User): raise TypeError()
def test_no_subclass_context_manager_does_not_swallow_exception(self): class User(Document): name = StringField() with self.assertRaises(TypeError): with no_sub_classes(User): raise TypeError()
def test_no_sub_classes(self): class A(Document): x = IntField() y = IntField() meta = {'allow_inheritance': True} 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() self.assertEqual(A.objects.count(), 5) self.assertEqual(B.objects.count(), 3) self.assertEqual(C.objects.count(), 1) with no_sub_classes(A) as A: self.assertEqual(A.objects.count(), 2) for obj in A.objects: self.assertEqual(obj.__class__, A) with no_sub_classes(B) as B: self.assertEqual(B.objects.count(), 2) for obj in B.objects: self.assertEqual(obj.__class__, B) with no_sub_classes(C) as C: self.assertEqual(C.objects.count(), 1) for obj in C.objects: self.assertEqual(obj.__class__, C) # Confirm context manager exit correctly self.assertEqual(A.objects.count(), 5) self.assertEqual(B.objects.count(), 3) self.assertEqual(C.objects.count(), 1)
def test_no_sub_classes(self): clear_document_registry() class A(Document): x = IntField() meta = {"allow_inheritance": True} class B(A): z = IntField() class C(B): zz = IntField() A.drop_collection() A(x=10).save() A(x=15).save() B(x=20).save() B(x=30).save() C(x=40).save() assert A.objects.count() == 5 assert B.objects.count() == 3 assert C.objects.count() == 1 with no_sub_classes(A): assert A.objects.count() == 2 for obj in A.objects: assert obj.__class__ == A with no_sub_classes(B): assert B.objects.count() == 2 for obj in B.objects: assert obj.__class__ == B with no_sub_classes(C): assert C.objects.count() == 1 for obj in C.objects: assert obj.__class__ == C # Confirm context manager exit correctly assert A.objects.count() == 5 assert B.objects.count() == 3 assert C.objects.count() == 1
def test_no_sub_classes_modification_to_document_class_are_temporary(self): class A(Document): x = IntField() meta = {"allow_inheritance": True} class B(A): z = IntField() self.assertEqual(A._subclasses, ("A", "A.B")) with no_sub_classes(A): self.assertEqual(A._subclasses, ("A", )) self.assertEqual(A._subclasses, ("A", "A.B")) self.assertEqual(B._subclasses, ("A.B", )) with no_sub_classes(B): self.assertEqual(B._subclasses, ("A.B", )) self.assertEqual(B._subclasses, ("A.B", ))
def test_no_sub_classes_modification_to_document_class_are_temporary(self): class A(Document): x = IntField() meta = {"allow_inheritance": True} class B(A): z = IntField() assert A._subclasses == ("A", "A.B") with no_sub_classes(A): assert A._subclasses == ("A",) assert A._subclasses == ("A", "A.B") assert B._subclasses == ("A.B",) with no_sub_classes(B): assert B._subclasses == ("A.B",) assert B._subclasses == ("A.B",)
def test_no_sub_classes_modification_to_document_class_are_temporary(self): class A(Document): x = IntField() meta = {'allow_inheritance': True} class B(A): z = IntField() self.assertEqual(A._subclasses, ('A', 'A.B')) with no_sub_classes(A): self.assertEqual(A._subclasses, ('A',)) self.assertEqual(A._subclasses, ('A', 'A.B')) self.assertEqual(B._subclasses, ('A.B',)) with no_sub_classes(B): self.assertEqual(B._subclasses, ('A.B',)) self.assertEqual(B._subclasses, ('A.B',))