Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ffdc28d

Browse files
Add more tests to delete
1 parent 3944fc3 commit ffdc28d

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

tests/delete/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,16 @@ class A(models.Model):
6161
cascade_nullable = models.ForeignKey(
6262
R, models.CASCADE, null=True, related_name="cascade_nullable_set"
6363
)
64+
db_cascade = models.ForeignKey(R, models.DB_CASCADE, null=True, related_name="db_cascade_set")
6465
protect = models.ForeignKey(
6566
R, models.PROTECT, null=True, related_name="protect_set"
6667
)
6768
restrict = models.ForeignKey(
6869
R, models.RESTRICT, null=True, related_name="restrict_set"
6970
)
71+
db_restrict = models.ForeignKey(
72+
R, models.DB_RESTRICT, null=True, related_name="db_restrict_set"
73+
)
7074
donothing = models.ForeignKey(
7175
R, models.DO_NOTHING, null=True, related_name="donothing_set"
7276
)
@@ -77,6 +81,9 @@ class A(models.Model):
7781
cascade_p = models.ForeignKey(
7882
P, models.CASCADE, related_name="cascade_p_set", null=True
7983
)
84+
db_cascade_p = models.ForeignKey(
85+
P, models.DB_CASCADE, related_name="db_cascade_p_set", null=True
86+
)
8087

8188
# A OneToOneField is just a ForeignKey unique=True, so we don't duplicate
8289
# all the tests; just one smoke test to ensure on_delete works for it as
@@ -101,8 +108,10 @@ def create_a(name):
101108
"setdefault_none",
102109
"cascade",
103110
"cascade_nullable",
111+
"db_cascade",
104112
"protect",
105113
"restrict",
114+
"db_restrict",
106115
"donothing",
107116
"o2o_setnull",
108117
):

tests/delete/tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,27 @@ def test_restrict_gfk_no_fast_delete(self):
321321
self.assertFalse(GenericB2.objects.exists())
322322
self.assertFalse(GenericDeleteBottom.objects.exists())
323323

324+
def test_db_restrict_path_db_cascade_direct(self):
325+
a = create_a("db_restrict")
326+
a.db_restrict.p = P.objects.create()
327+
a.db_restrict.save()
328+
a.db_cascade_p = a.db_restrict.p
329+
a.save()
330+
a.db_restrict.p.delete()
331+
self.assertFalse(A.objects.filter(name="db_restrict").exists())
332+
self.assertFalse(R.objects.filter(pk=a.db_restrict_id).exists())
333+
334+
def test_db_restrict_path_cascade_direct(self):
335+
a = create_a("db_restrict")
336+
a.db_restrict.p = P.objects.create()
337+
a.db_restrict.save()
338+
a.cascade_p = a.db_restrict.p
339+
a.save()
340+
a.db_restrict.p.delete()
341+
self.assertFalse(A.objects.filter(name="db_restrict").exists())
342+
self.assertFalse(R.objects.filter(pk=a.db_restrict_id).exists())
343+
344+
324345

325346
class DeletionTests(TestCase):
326347
def test_sliced_queryset(self):

0 commit comments

Comments
 (0)