diff options
author | Jon Janzen <jon@jonjanzen.com> | 2022-11-03 19:57:33 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-11-09 10:32:40 +0100 |
commit | 321ecb40f4da842926e1bc07e11df4aabe53ca4b (patch) | |
tree | 3a306ec0bc38c90eb95d8adceaecc3017e1b3d06 /tests/async | |
parent | 41e8931c2cc68d8b2de4219be930e2c305b4eba1 (diff) | |
download | django-321ecb40f4da842926e1bc07e11df4aabe53ca4b.tar.gz |
Fixed #34135 -- Added async-compatible interface to related managers.
Diffstat (limited to 'tests/async')
-rw-r--r-- | tests/async/test_async_related_managers.py | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/async/test_async_related_managers.py b/tests/async/test_async_related_managers.py index dd573f5989..c475b54899 100644 --- a/tests/async/test_async_related_managers.py +++ b/tests/async/test_async_related_managers.py @@ -1,6 +1,6 @@ from django.test import TestCase -from .models import ManyToManyModel, SimpleModel +from .models import ManyToManyModel, RelatedModel, SimpleModel class AsyncRelatedManagersOperationTest(TestCase): @@ -8,6 +8,8 @@ class AsyncRelatedManagersOperationTest(TestCase): def setUpTestData(cls): cls.mtm1 = ManyToManyModel.objects.create() cls.s1 = SimpleModel.objects.create(field=0) + cls.mtm2 = ManyToManyModel.objects.create() + cls.mtm2.simples.set([cls.s1]) async def test_acreate(self): await self.mtm1.simples.acreate(field=2) @@ -54,3 +56,51 @@ class AsyncRelatedManagersOperationTest(TestCase): self.assertIs(created, True) self.assertEqual(await self.s1.relatedmodel_set.acount(), 1) self.assertEqual(new_relatedmodel.simple, self.s1) + + async def test_aadd(self): + await self.mtm1.simples.aadd(self.s1) + self.assertEqual(await self.mtm1.simples.aget(), self.s1) + + async def test_aadd_reverse(self): + r1 = await RelatedModel.objects.acreate() + await self.s1.relatedmodel_set.aadd(r1, bulk=False) + self.assertEqual(await self.s1.relatedmodel_set.aget(), r1) + + async def test_aremove(self): + self.assertEqual(await self.mtm2.simples.acount(), 1) + await self.mtm2.simples.aremove(self.s1) + self.assertEqual(await self.mtm2.simples.acount(), 0) + + async def test_aremove_reverse(self): + r1 = await RelatedModel.objects.acreate(simple=self.s1) + self.assertEqual(await self.s1.relatedmodel_set.acount(), 1) + await self.s1.relatedmodel_set.aremove(r1) + self.assertEqual(await self.s1.relatedmodel_set.acount(), 0) + + async def test_aset(self): + await self.mtm1.simples.aset([self.s1]) + self.assertEqual(await self.mtm1.simples.aget(), self.s1) + await self.mtm1.simples.aset([]) + self.assertEqual(await self.mtm1.simples.acount(), 0) + await self.mtm1.simples.aset([self.s1], clear=True) + self.assertEqual(await self.mtm1.simples.aget(), self.s1) + + async def test_aset_reverse(self): + r1 = await RelatedModel.objects.acreate() + await self.s1.relatedmodel_set.aset([r1]) + self.assertEqual(await self.s1.relatedmodel_set.aget(), r1) + await self.s1.relatedmodel_set.aset([]) + self.assertEqual(await self.s1.relatedmodel_set.acount(), 0) + await self.s1.relatedmodel_set.aset([r1], bulk=False, clear=True) + self.assertEqual(await self.s1.relatedmodel_set.aget(), r1) + + async def test_aclear(self): + self.assertEqual(await self.mtm2.simples.acount(), 1) + await self.mtm2.simples.aclear() + self.assertEqual(await self.mtm2.simples.acount(), 0) + + async def test_aclear_reverse(self): + await RelatedModel.objects.acreate(simple=self.s1) + self.assertEqual(await self.s1.relatedmodel_set.acount(), 1) + await self.s1.relatedmodel_set.aclear(bulk=False) + self.assertEqual(await self.s1.relatedmodel_set.acount(), 0) |