diff options
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 |
commit | 0e3018b681eea2c37db559c529a236ce6084efbc (patch) | |
tree | f920411db9474ae84b26e195253183ab3c9d7fc4 | |
parent | 5a8cc5e5bcbfeec717ebd75512c83421ac043dd1 (diff) | |
download | Ishtar-0e3018b681eea2c37db559c529a236ce6084efbc.tar.bz2 Ishtar-0e3018b681eea2c37db559c529a236ce6084efbc.zip |
✅ add relations forms tests
-rw-r--r-- | archaeological_operations/tests.py | 50 |
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") |