From 4b22b3a77938aaec4c21c921c90e922fe526c43c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 6 Oct 2022 15:08:00 +0200 Subject: Geodata: cascade add --- ishtar_common/tests.py | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) (limited to 'ishtar_common/tests.py') diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index ae115f654..74e746c61 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -3316,6 +3316,108 @@ class GeoVectorFormTest(TestCase): ) +class GeoVectorTest(TestCase): + fixtures = FIND_FIXTURES + + def setUp(self): + # accounts + self.username, self.password, self.user = create_superuser() + + # operation, context record, find + operation_type = models.OperationType.objects.get(txt_idx="arch_diagnostic") + data = { + "year": 2010, + "operation_type_id": operation_type.pk, + "history_modifier": self.user, + "code_patriarche": 99999 + } + Operation = apps.get_model("archaeological_operations", "Operation") + self.operation = Operation.objects.create(**data) + data = { + "operation_id": self.operation.pk, + "label": "Context record", + "history_modifier": self.user, + } + ContextRecord = apps.get_model("archaeological_context_records", + "ContextRecord") + self.context_record = ContextRecord.objects.create(**data) + data = { + "context_record_id": self.context_record.pk, + "label": "Find", + "history_modifier": self.user, + } + BaseFind = apps.get_model("archaeological_finds", "BaseFind") + self.base_find = BaseFind.objects.create(**data) + + # for geodata + self.ct = ContentType.objects.get_for_model(models.GeoVectorData) + self.origin = models.GeoOriginType.objects.get( + txt_idx="georeferencement", + ) + self.data_type = models.GeoDataType.objects.get( + txt_idx="operation-center", + ) + self.provider = models.GeoProviderType.objects.get( + txt_idx="france-ign", + ) + self.srs, _ = models.SpatialReferenceSystem.objects.get_or_create( + label="EPSG-27572", + txt_idx="epsg-27572", + srid=2154 + ) + self.app_source = "archaeological_operations" + self.model_source = "operation" + self.source_pk = self.operation.pk + self.source_content_type_pk = ContentType.objects.get( + app_label=self.app_source, + model=self.model_source + ).pk + + def _reinit_objects(self): + # get object from db + Operation = apps.get_model("archaeological_operations", "Operation") + self.operation = Operation.objects.get(pk=self.operation.pk) + ContextRecord = apps.get_model("archaeological_context_records", + "ContextRecord") + self.context_record = ContextRecord.objects.get(pk=self.context_record.pk) + BaseFind = apps.get_model("archaeological_finds", "BaseFind") + self.base_find = BaseFind.objects.get(pk=self.base_find.pk) + + def _create_geodata(self): + return models.GeoVectorData.objects.create( + source_content_type_id=self.source_content_type_pk, + source_id=self.source_pk, + name="Test geo", + origin=self.origin, + data_type=self.data_type, + provider=self.provider, + comment="This is a comment." + ) + + def test_cascade_add(self): + self.assertIsNone(self.operation.main_geodata) + self.assertEqual(self.operation.geodata.count(), 0) + self.assertIsNone(self.context_record.main_geodata) + self.assertEqual(self.context_record.geodata.count(), 0) + self.assertIsNone(self.base_find.main_geodata) + self.assertEqual(self.base_find.geodata.count(), 0) + + geo_vector = self._create_geodata() + self.operation.geodata.add(geo_vector) + + self._reinit_objects() + self.assertEqual(self.operation.geodata.count(), 1) + self.assertEqual(self.operation.main_geodata, geo_vector) + self.assertEqual(self.context_record.geodata.count(), 1) + self.assertEqual(self.context_record.main_geodata, geo_vector) + self.assertEqual(self.base_find.geodata.count(), 1) + self.assertEqual(self.base_find.main_geodata, geo_vector) + + # test geo item remove + # test town add + # test town remove + + class NewItems(TestCase): fixtures = COMMON_FIXTURES -- cgit v1.2.3