summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-18 12:42:01 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-18 12:44:38 +0200
commit0e3018b681eea2c37db559c529a236ce6084efbc (patch)
treef920411db9474ae84b26e195253183ab3c9d7fc4
parent5a8cc5e5bcbfeec717ebd75512c83421ac043dd1 (diff)
downloadIshtar-0e3018b681eea2c37db559c529a236ce6084efbc.tar.bz2
Ishtar-0e3018b681eea2c37db559c529a236ce6084efbc.zip
✅ add relations forms tests
-rw-r--r--archaeological_operations/tests.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index a6b90dd51..8baf02727 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -2598,6 +2598,56 @@ class OperationTest(TestCase, OperationInitTest):
return data
+ def test_operation_relations_formset(self):
+ self.create_operation()
+ self.create_operation()
+ ope1, ope2, ope3 = self.operations[-3:]
+ rt = models.RelationType.objects.all()[0]
+ self.assertTrue(rt.symmetrical or rt.inverse_relation)
+ ope1.right_relations.add()
+ r = models.RecordRelations.objects.create(
+ left_record=ope1, right_record=ope2, relation_type=rt
+ )
+ r.save()
+ c = Client()
+
+ c.login(username=self.alt_username, password=self.alt_password)
+ url = reverse("operation-relation-modify", kwargs={"pk": ope1.pk})
+ response = c.get(url)
+ self.assertRedirects(response, "/") # permission failed, redirect to index
+
+ c.login(username=self.username, password=self.password)
+ response = c.get(url)
+ self.assertEqual(response.status_code, 200)
+ self.assertContains(response, str(ope2))
+
+ # add an ope
+ data = self.formset_init_data(models.RecordRelations)
+ nb_relation_initial = models.RecordRelations.objects.count()
+ data["form-0-relation_type"] = rt.pk
+ data["form-0-right_record"] = ope2.pk
+ data["form-1-relation_type"] = rt.pk
+ data["form-1-right_record"] = ope3.pk
+ post_response = c.post(url, data)
+ self.assertEqual(post_response.status_code, 302)
+ # relation is symetrical -> 2 new relations
+ self.assertEqual(models.RecordRelations.objects.count(), nb_relation_initial + 2)
+ lst = [rel.right_record_id for rel in ope1.right_relations.all()]
+ self.assertIn(ope2.pk, lst)
+ self.assertIn(ope3.pk, lst)
+
+ # delete first
+ data["form-0-pk"] = models.RecordRelations.objects.get(
+ left_record=ope1, right_record=ope2, relation_type=rt
+ ).pk
+ data["form-0-DELETE"] = 1
+ post_response = c.post(url, data)
+ self.assertEqual(post_response.status_code, 302)
+ self.assertEqual(models.RecordRelations.objects.count(), nb_relation_initial)
+ lst = [rel.right_record_id for rel in ope1.right_relations.all()]
+ self.assertNotIn(ope2.pk, lst)
+ self.assertIn(ope3.pk, lst)
+
def test_operation_site_formset(self):
ope1, ope2 = self.create_operation()[:2]
site1 = models.ArchaeologicalSite.objects.create(reference="ref-site")