summaryrefslogtreecommitdiff
path: root/tests/delete
diff options
context:
space:
mode:
authorStephen Brown <december1981@gmail.com>2019-04-06 21:23:52 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-05-06 13:04:31 +0200
commit86a3ad351ec18d9dcd50cac1fc8ada6f904675db (patch)
treef4e303eb5b6fbdd4cea95974d8a5c58061090fac /tests/delete
parent29601bca9b584b254ded0a8f59cf776194f1bd28 (diff)
downloaddjango-86a3ad351ec18d9dcd50cac1fc8ada6f904675db.tar.gz
Fixed #30339 -- Made Model.delete(keep_parents=True) preserves nested parent reverse relationships.
Thanks Simon Charette for the review.
Diffstat (limited to 'tests/delete')
-rw-r--r--tests/delete/models.py4
-rw-r--r--tests/delete/tests.py14
2 files changed, 16 insertions, 2 deletions
diff --git a/tests/delete/models.py b/tests/delete/models.py
index d2cce02333..e2ddce0588 100644
--- a/tests/delete/models.py
+++ b/tests/delete/models.py
@@ -28,6 +28,10 @@ class RChild(R):
pass
+class RChildChild(RChild):
+ pass
+
+
class A(models.Model):
name = models.CharField(max_length=30)
diff --git a/tests/delete/tests.py b/tests/delete/tests.py
index fe77d7d4c8..6b1cd3675b 100644
--- a/tests/delete/tests.py
+++ b/tests/delete/tests.py
@@ -7,8 +7,8 @@ from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
from .models import (
MR, A, Avatar, Base, Child, HiddenUser, HiddenUserProfile, M, M2MFrom,
- M2MTo, MRNull, Origin, Parent, R, RChild, Referrer, S, T, User, create_a,
- get_default_r,
+ M2MTo, MRNull, Origin, Parent, R, RChild, RChildChild, Referrer, S, T,
+ User, create_a, get_default_r,
)
@@ -371,6 +371,16 @@ class DeletionTests(TestCase):
self.assertTrue(R.objects.filter(id=parent_id).exists())
self.assertTrue(S.objects.filter(pk=parent_referent_id).exists())
+ childchild = RChildChild.objects.create()
+ parent_id = childchild.rchild_ptr.r_ptr_id
+ child_id = childchild.rchild_ptr_id
+ parent_referent_id = S.objects.create(r=childchild.rchild_ptr.r_ptr).pk
+ childchild.delete(keep_parents=True)
+ self.assertFalse(RChildChild.objects.filter(id=childchild.id).exists())
+ self.assertTrue(RChild.objects.filter(id=child_id).exists())
+ self.assertTrue(R.objects.filter(id=parent_id).exists())
+ self.assertTrue(S.objects.filter(pk=parent_referent_id).exists())
+
def test_queryset_delete_returns_num_rows(self):
"""
QuerySet.delete() should return the number of deleted rows and a