summaryrefslogtreecommitdiff
path: root/tests/delete
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2020-01-28 10:51:36 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-01-29 09:02:23 +0100
commit4ca5c565f4dc9e97845036e86416abc5cfde766c (patch)
tree9a0767a28f2e6312022f2bbcde856a466c0bb88c /tests/delete
parent2a6fc89018881c07e38f81989ff0c012e7539390 (diff)
downloaddjango-4ca5c565f4dc9e97845036e86416abc5cfde766c.tar.gz
Refs #27852 -- Fixed object deletion to show all restricted related objects rather than just the first one.
Diffstat (limited to 'tests/delete')
-rw-r--r--tests/delete/models.py4
-rw-r--r--tests/delete/tests.py29
2 files changed, 24 insertions, 9 deletions
diff --git a/tests/delete/models.py b/tests/delete/models.py
index 618b36bda9..440581dc54 100644
--- a/tests/delete/models.py
+++ b/tests/delete/models.py
@@ -177,6 +177,10 @@ class B2(models.Model):
delete_top = models.ForeignKey(DeleteTop, models.CASCADE)
+class B3(models.Model):
+ restrict = models.ForeignKey(R, models.RESTRICT)
+
+
class DeleteBottom(models.Model):
b1 = models.ForeignKey(B1, models.RESTRICT)
b2 = models.ForeignKey(B2, models.CASCADE)
diff --git a/tests/delete/tests.py b/tests/delete/tests.py
index f78e61704a..279788d2d3 100644
--- a/tests/delete/tests.py
+++ b/tests/delete/tests.py
@@ -8,10 +8,10 @@ from django.db.models.sql.constants import GET_ITERATOR_CHUNK_SIZE
from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
from .models import (
- B1, B2, MR, A, Avatar, B, Base, Child, DeleteBottom, DeleteTop, GenericB1,
- GenericB2, GenericDeleteBottom, HiddenUser, HiddenUserProfile, M, M2MFrom,
- M2MTo, MRNull, Origin, P, Parent, R, RChild, RChildChild, Referrer, S, T,
- User, create_a, get_default_r,
+ B1, B2, B3, MR, A, Avatar, B, Base, Child, DeleteBottom, DeleteTop,
+ GenericB1, GenericB2, GenericDeleteBottom, HiddenUser, HiddenUserProfile,
+ M, M2MFrom, M2MTo, MRNull, Origin, P, Parent, R, RChild, RChildChild,
+ Referrer, S, T, User, create_a, get_default_r,
)
@@ -164,7 +164,18 @@ class OnDeleteTests(TestCase):
a = create_a('restrict')
msg = (
"Cannot delete some instances of model 'R' because they are "
- "referenced through a restricted foreign key: 'A.restrict'."
+ "referenced through restricted foreign keys: 'A.restrict'."
+ )
+ with self.assertRaisesMessage(RestrictedError, msg):
+ a.restrict.delete()
+
+ def test_restrict_multiple(self):
+ a = create_a('restrict')
+ B3.objects.create(restrict=a.restrict)
+ msg = (
+ "Cannot delete some instances of model 'R' because they are "
+ "referenced through restricted foreign keys: 'A.restrict', "
+ "'B3.restrict'."
)
with self.assertRaisesMessage(RestrictedError, msg):
a.restrict.delete()
@@ -174,8 +185,8 @@ class OnDeleteTests(TestCase):
a.restrict.p = P.objects.create()
a.restrict.save()
msg = (
- "Cannot delete some instances of model 'R' because they are "
- "referenced through a restricted foreign key: 'A.restrict'."
+ "Cannot delete some instances of model 'P' because they are "
+ "referenced through restricted foreign keys: 'A.restrict'."
)
with self.assertRaisesMessage(RestrictedError, msg):
a.restrict.p.delete()
@@ -203,7 +214,7 @@ class OnDeleteTests(TestCase):
DeleteBottom.objects.create(b1=b1, b2=b2)
msg = (
"Cannot delete some instances of model 'B1' because they are "
- "referenced through a restricted foreign key: 'DeleteBottom.b1'."
+ "referenced through restricted foreign keys: 'DeleteBottom.b1'."
)
with self.assertRaisesMessage(RestrictedError, msg):
b1.delete()
@@ -225,7 +236,7 @@ class OnDeleteTests(TestCase):
GenericDeleteBottom.objects.create(generic_b1=generic_b1, generic_b2=generic_b2)
msg = (
"Cannot delete some instances of model 'GenericB1' because they "
- "are referenced through a restricted foreign key: "
+ "are referenced through restricted foreign keys: "
"'GenericDeleteBottom.generic_b1'."
)
with self.assertRaisesMessage(RestrictedError, msg):