diff options
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r-- | ishtar_common/tests.py | 77 |
1 files changed, 71 insertions, 6 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 74e746c61..4156f9f0f 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -3372,6 +3372,16 @@ class GeoVectorTest(TestCase): app_label=self.app_source, model=self.model_source ).pk + self.alt_data_type = models.GeoDataType.objects.get( + txt_idx="basefind-center", + ) + self.alt_app_source = "archaeological_finds" + self.alt_model_source = "basefind" + self.alt_source_pk = self.base_find.pk + self.alt_source_content_type_pk = ContentType.objects.get( + app_label=self.alt_app_source, + model=self.alt_model_source + ).pk def _reinit_objects(self): # get object from db @@ -3383,13 +3393,16 @@ class GeoVectorTest(TestCase): BaseFind = apps.get_model("archaeological_finds", "BaseFind") self.base_find = BaseFind.objects.get(pk=self.base_find.pk) - def _create_geodata(self): + def _create_geodata(self, alt=False): + ct = self.source_content_type_pk if not alt else self.alt_source_content_type_pk + source = self.source_pk if not alt else self.alt_source_pk + dt = self.data_type if not alt else self.alt_data_type return models.GeoVectorData.objects.create( - source_content_type_id=self.source_content_type_pk, - source_id=self.source_pk, + source_content_type_id=ct, + source_id=source, name="Test geo", origin=self.origin, - data_type=self.data_type, + data_type=dt, provider=self.provider, comment="This is a comment." ) @@ -3402,6 +3415,9 @@ class GeoVectorTest(TestCase): self.assertIsNone(self.base_find.main_geodata) self.assertEqual(self.base_find.geodata.count(), 0) + geo_vector_find = self._create_geodata(alt=True) + self.base_find.geodata.add(geo_vector_find) + geo_vector = self._create_geodata() self.operation.geodata.add(geo_vector) @@ -3410,10 +3426,59 @@ class GeoVectorTest(TestCase): 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(), 2) + self.assertEqual(self.base_find.main_geodata, geo_vector_find) + + geo_vector2 = self._create_geodata() + self.operation.geodata.add(geo_vector2) + + self._reinit_objects() + self.assertEqual(self.operation.geodata.count(), 2) + self.assertEqual(self.operation.main_geodata, geo_vector) # no change + self.assertEqual(self.context_record.geodata.count(), 2) + self.assertEqual(self.context_record.main_geodata, geo_vector) # no change + self.assertEqual(self.base_find.geodata.count(), 3) + self.assertEqual(self.base_find.main_geodata, geo_vector_find) # no change + + def test_cascade_remove(self): + geo_vector = self._create_geodata() + self.operation.geodata.add(geo_vector) + geo_vector2 = self._create_geodata() + self.operation.geodata.add(geo_vector2) + geo_vector_find = self._create_geodata(alt=True) + self.base_find.geodata.add(geo_vector_find) + + self.operation.geodata.remove(geo_vector) + self._reinit_objects() + # main geoitem changed to geovector2 + self.assertEqual(self.operation.main_geodata, geo_vector2) + self.assertEqual(self.operation.geodata.count(), 1) + self.assertEqual(self.context_record.main_geodata, geo_vector2) + self.assertEqual(self.context_record.geodata.count(), 1) + self.assertEqual(self.base_find.main_geodata, geo_vector2) + self.assertEqual(self.base_find.geodata.count(), 2) + + self.operation.geodata.remove(geo_vector2) + self._reinit_objects() + 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.assertEqual(self.base_find.main_geodata, geo_vector_find) + self.assertEqual(self.base_find.geodata.count(), 1) + + self.operation.geodata.add(geo_vector) + self.operation.geodata.add(geo_vector2) + + self.operation.geodata.clear() + self._reinit_objects() + 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.assertEqual(self.base_find.main_geodata, geo_vector_find) 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 |