| 21 | |
| 22 | class ManagersRegressionTests(TestCase): |
| 23 | def test_managers(self): |
| 24 | a1 = Child1.objects.create(name="fred", data="a1") |
| 25 | a2 = Child1.objects.create(name="barney", data="a2") |
| 26 | b1 = Child2.objects.create(name="fred", data="b1", value=1) |
| 27 | b2 = Child2.objects.create(name="barney", data="b2", value=42) |
| 28 | c1 = Child3.objects.create(name="fred", data="c1", comment="yes") |
| 29 | c2 = Child3.objects.create(name="barney", data="c2", comment="no") |
| 30 | d1 = Child4.objects.create(name="fred", data="d1") |
| 31 | d2 = Child4.objects.create(name="barney", data="d2") |
| 32 | fred1 = Child5.objects.create(name="fred", comment="yes") |
| 33 | Child5.objects.create(name="barney", comment="no") |
| 34 | f1 = Child6.objects.create(name="fred", data="f1", value=42) |
| 35 | f2 = Child6.objects.create(name="barney", data="f2", value=42) |
| 36 | fred2 = Child7.objects.create(name="fred") |
| 37 | barney = Child7.objects.create(name="barney") |
| 38 | |
| 39 | self.assertSequenceEqual(Child1.manager1.all(), [a1]) |
| 40 | self.assertSequenceEqual(Child1.manager2.all(), [a2]) |
| 41 | self.assertSequenceEqual(Child1._default_manager.all(), [a1]) |
| 42 | |
| 43 | self.assertSequenceEqual(Child2._default_manager.all(), [b1]) |
| 44 | self.assertSequenceEqual(Child2.restricted.all(), [b2]) |
| 45 | |
| 46 | self.assertSequenceEqual(Child3._default_manager.all(), [c1]) |
| 47 | self.assertSequenceEqual(Child3.manager1.all(), [c1]) |
| 48 | self.assertSequenceEqual(Child3.manager2.all(), [c2]) |
| 49 | |
| 50 | # Since Child6 inherits from Child4, the corresponding rows from f1 and |
| 51 | # f2 also appear here. This is the expected result. |
| 52 | self.assertSequenceEqual( |
| 53 | Child4._default_manager.order_by("data"), |
| 54 | [d1, d2, f1.child4_ptr, f2.child4_ptr], |
| 55 | ) |
| 56 | self.assertCountEqual(Child4.manager1.all(), [d1, f1.child4_ptr]) |
| 57 | self.assertCountEqual(Child5._default_manager.all(), [fred1]) |
| 58 | self.assertCountEqual(Child6._default_manager.all(), [f1, f2]) |
| 59 | self.assertSequenceEqual( |
| 60 | Child7._default_manager.order_by("name"), |
| 61 | [barney, fred2], |
| 62 | ) |
| 63 | |
| 64 | def test_abstract_manager(self): |
| 65 | # Accessing the manager on an abstract model should |