summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-05-03 12:27:23 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-05-03 16:49:12 +0200
commit65431dd76a453aa106882669d8923d85adbd4573 (patch)
treeb6235a3f1fbd8e158af8eca69ecda256ea9bf8ad /archaeological_finds/tests.py
parent7755e493f4f675d58e2520fda2b7775d4f4b25d5 (diff)
downloadIshtar-65431dd76a453aa106882669d8923d85adbd4573.tar.bz2
Ishtar-65431dd76a453aa106882669d8923d85adbd4573.zip
🐛 when base finds are deleted, delete the associated finds if not other base find is associated (refs #3871)
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py47
1 files changed, 46 insertions, 1 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index d5f763467..c98da7951 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -60,6 +60,7 @@ from ishtar_common.models import (
Area,
Document,
)
+from archaeological_operations.models import AdministrativeAct
from archaeological_context_records.models import (
Period,
Dating,
@@ -94,7 +95,7 @@ from ishtar_common.tests import (
GenericSerializationTest,
SearchText,
)
-from archaeological_operations.tests import ImportTest, create_operation
+from archaeological_operations.tests import ImportTest, create_operation, create_administrativact
from archaeological_context_records.tests import ContextRecordInit
from archaeological_operations.serializers import operation_serialization
@@ -1068,6 +1069,50 @@ class FindTest(FindInit, TestCase):
self.client = Client()
self.client.login(username=self.username, password=self.password)
+ def test_cascade_delete_operation(self):
+ # test delete an operation
+ find = self.finds[0]
+ find_id = find.id
+ nb_f = models.Find.objects.count()
+ bf = find.base_finds.all()[0]
+ bf_id = bf.id
+ nb_bf = models.BaseFind.objects.count()
+ cr = bf.context_record
+ cr_id = cr.id
+ nb_cr = ContextRecord.objects.count()
+ operation = cr.operation
+ operation_id = operation.id
+ nb_ope = Operation.objects.count()
+ # attach an admin act
+ __, admin_acts = create_administrativact(self.user, operation)
+ admin_act_id = admin_acts[0].id
+ nb_admin_act = AdministrativeAct.objects.count()
+ operation.delete()
+ self.assertEqual(Operation.objects.filter(pk=operation_id).count(), 0)
+ self.assertEqual(Operation.objects.count(), nb_ope - 1)
+ self.assertEqual(AdministrativeAct.objects.filter(pk=admin_act_id).count(), 0)
+ self.assertEqual(AdministrativeAct.objects.count(), nb_admin_act - 1)
+ self.assertEqual(ContextRecord.objects.filter(pk=cr_id).count(), 0)
+ self.assertEqual(ContextRecord.objects.count(), nb_cr - 1)
+ self.assertEqual(models.BaseFind.objects.filter(pk=bf_id).count(), 0)
+ self.assertEqual(models.BaseFind.objects.count(), nb_bf - 1)
+ self.assertEqual(models.Find.objects.filter(pk=find_id).count(), 0)
+ self.assertEqual(models.Find.objects.count(), nb_f - 1)
+
+ def test_cascade_delete_find(self):
+ # test delete associated base find
+ find = self.finds[0]
+ find_id = find.id
+ nb_f = models.Find.objects.count()
+ bf = find.base_finds.all()[0]
+ bf_id = bf.id
+ nb_bf = models.BaseFind.objects.count()
+ find.delete()
+ self.assertEqual(models.BaseFind.objects.filter(pk=bf_id).count(), 0)
+ self.assertEqual(models.BaseFind.objects.count(), nb_bf - 1)
+ self.assertEqual(models.Find.objects.filter(pk=find_id).count(), 0)
+ self.assertEqual(models.Find.objects.count(), nb_f - 1)
+
def test_external_id(self):
find = self.finds[0]
base_find = find.base_finds.all()[0]