From 6cdd3e8d079896d61efca22c6abe51f10ce26705 Mon Sep 17 00:00:00 2001 From: Gagaro Date: Mon, 21 Aug 2023 11:21:53 +0200 Subject: [PATCH] Add test for self SOFT_DELETE_CASCADE --- safedelete/tests/test_soft_delete_cascade.py | 21 ++++++++++++++++++++ tox.ini | 12 ++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/safedelete/tests/test_soft_delete_cascade.py b/safedelete/tests/test_soft_delete_cascade.py index e302a34..77a5519 100644 --- a/safedelete/tests/test_soft_delete_cascade.py +++ b/safedelete/tests/test_soft_delete_cascade.py @@ -75,6 +75,17 @@ class ArticleView(CustomAbstractModel): article = models.ForeignKey(Article, on_delete=models.CASCADE) +class ParentSelf(SafeDeleteModel): + _safedelete_policy = SOFT_DELETE_CASCADE + parent = models.ForeignKey( + 'self', + related_name="children", + on_delete=models.CASCADE, + null=True, + blank=True + ) + + def pre_softdelete_article(sender, instance, *args, **kwargs): # Related objects should not be SET before instance was deleted assert instance.pressnormalmodel_set.count() == 1 @@ -282,3 +293,13 @@ def test_safe_delete_cascade_generic_foreign_key(self): child.undelete(force_policy=SOFT_DELETE_CASCADE) self.assertEqual(ChildGeneric.objects.count(), 1) self.assertEqual(ParentGeneric.objects.count(), 1) + + def test_parent_self_cascade(self): + parent = ParentSelf.objects.create() + ParentSelf.objects.create(parent=parent) + ParentSelf.objects.create(parent=parent) + ParentSelf.objects.create() + + self.assertEqual(ParentSelf.objects.all().count(), 4) + parent.delete() + self.assertEqual(ParentSelf.objects.all().count(), 1) diff --git a/tox.ini b/tox.ini index d530943..701c627 100644 --- a/tox.ini +++ b/tox.ini @@ -2,9 +2,10 @@ skipsdist = True envlist = {py37}-django-{32} - {py38}-django-{32,40,41} - {py39}-django-{32,40,41} - {py310}-django-{32,40,41} + {py38}-django-{32,40,41,42} + {py39}-django-{32,40,41,42} + {py310}-django-{32,40,41,42} + {py311}-django-{32,40,41,42} {py310}-isort {py310}-flake8 {py310}-mypy @@ -17,8 +18,9 @@ deps = django-32: Django>=3.2,<3.3 django-40: Django>=4.0,<4.1 django-41: Django>=4.1,<4.2 + django-42: Django>=4.2,<5.0 mypy: mypy - mypy: Django>=4.0,<4.1 + mypy: Django>=4.1,<5.0 mypy: django-stubs mypy: types-setuptools isort: isort @@ -34,7 +36,7 @@ changedir = docs deps = sphinx sphinx_rtd_theme - Django>=3.2,<4.1 + Django>=4.2,<5.0 commands = sphinx-build -W -b html -d build/doctrees . build/html