From 321ecb40f4da842926e1bc07e11df4aabe53ca4b Mon Sep 17 00:00:00 2001 From: Jon Janzen Date: Thu, 3 Nov 2022 19:57:33 +0100 Subject: Fixed #34135 -- Added async-compatible interface to related managers. --- tests/async/test_async_related_managers.py | 52 +++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) (limited to 'tests/async') 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) -- cgit v1.2.1