diff options
| -rw-r--r-- | archaeological_finds/tests.py | 358 | ||||
| -rw-r--r-- | archaeological_operations/tests.py | 16 | ||||
| -rw-r--r-- | ishtar_common/tests.py | 2 | 
3 files changed, 10 insertions, 366 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 16e4b3304..f79ec7dd2 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -81,7 +81,6 @@ from archaeological_operations.models import Operation, OperationType  from ishtar_common import forms_common  from ishtar_common.tests import ( -    GeomaticTest as BaseGeomaticTest,      WizardTest,      WizardTestFormData as FormData,      TestCase, @@ -2249,363 +2248,6 @@ class TreatmentTest(FindInit, TestCase):          self.assertEqual(initial_find.upstream_treatment, None) -@tag("gis") -class GeomaticTest(FindInit, TestCase): -    fixtures = FIND_FIXTURES -    model = models.Find - -    def setUp(self): -        self.create_finds(data_base={"label": "Find 1"}, force=True) -        self.password = "mypassword" -        self.username = "myuser" -        User.objects.create_superuser(self.username, "myemail@test.com", self.password) -        self.client = Client() -        self.client.login(username=self.username, password=self.password) - -    def test_point_precision(self): -        profile, created = IshtarSiteProfile.objects.get_or_create( -            slug="default", active=True -        ) -        profile.mapping = True -        profile.save() -        wgs84 = SpatialReferenceSystem.objects.get(srid=4326) -        find = self.finds[0] -        base_find = find.base_finds.all()[0] -        self.assertEqual(base_find.x, None) - -        base_find.x, base_find.y = 33.12999, 42.78945 -        base_find.spatial_reference_system = wgs84 -        base_find.save() - -        find = base_find.find.all()[0] -        response = self.client.get(reverse("show-find", kwargs={"pk": find.pk})) -        self.assertIn(b"33.12999", response.content) - -        profile.point_precision = 2 -        profile.save() - -        response = self.client.get(reverse("show-find", kwargs={"pk": find.pk})) -        self.assertIn(b"33.13", response.content) - -    def test_update_container_localisation_on_warehouse_update(self): -        profile, created = IshtarSiteProfile.objects.get_or_create( -            slug="default", active=True -        ) -        profile.mapping = True -        profile.save() -        wgs84 = SpatialReferenceSystem.objects.get(srid=4326) - -        find = self.finds[0] -        base_find = find.base_finds.all()[0] -        self.assertEqual(base_find.x, None) - -        operation = Operation.objects.get(pk=base_find.context_record.operation.pk) -        operation.x, operation.y = 33, 42 -        operation.spatial_reference_system = wgs84 -        operation.save() - -        # an update is pending for the linked context record -        q = ContextRecord.objects.filter( -            pk=base_find.context_record.pk, need_update=True -        ) -        self.assertEqual(q.count(), 1) - -        # process pending update -        context_record = q.all()[0] -        self.assertEqual(context_record.x, None)  # update has to be done -        context_record.skip_history_when_saving = True -        context_record._no_move = True -        context_record.save() -        context_record = ContextRecord.objects.get(pk=context_record.pk) -        self.assertEqual(context_record.x, 33) - -        # then an update is pending for the linked base find -        q = models.BaseFind.objects.filter(pk=base_find.pk, need_update=True) -        self.assertEqual(q.count(), 1) - -        # process pending update -        bf = q.all()[0] -        self.assertEqual(bf.x, None)  # update has to be done -        bf.skip_history_when_saving = True -        bf._no_move = True -        bf.save() -        bf = models.BaseFind.objects.get(pk=bf.pk) -        self.assertEqual(bf.x, 33) - -    @tag("not-setup-py") -    def test_post_save_point(self): -        find = self.finds[0] -        base_find = find.base_finds.all()[0] - -        srs, __ = SpatialReferenceSystem.objects.get_or_create( -            txt_idx="wgs84", -            defaults={"srid": 4326, "label": "WGS84", "auth_name": "EPSG"}, -        ) -        profile = get_current_profile() -        profile.mapping = True -        profile.save() - -        # db source -        geom = GEOSGeometry("POINT({} {} {})".format(2, 43, 1), srid=4326) -        base_find.point = geom -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.x) -        self.assertIsNotNone(base_find.y) -        self.assertIsNotNone(base_find.z) -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) - -        # re-save do not change sources -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.x) -        self.assertIsNotNone(base_find.y) -        self.assertIsNotNone(base_find.z) -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) - -        # form input -        base_find.x = 2 -        base_find.y = 3 -        base_find.z = 4 -        base_find.spatial_reference_system = srs -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.point) -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) -        # re-save do not change sources -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.point) -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) - -        # reinit -        base_find.x = None -        base_find.y = None -        base_find.z = None -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNone(base_find.point_2d) -        self.assertIsNone(base_find.point) -        self.assertEqual(base_find.point_source, None) -        self.assertEqual(base_find.point_source_item, None) - -        profile, created = IshtarSiteProfile.objects.get_or_create( -            slug="default", active=True -        ) -        profile.use_town_for_geo = True -        profile.save() - -        # geom from context record town -        center = "POINT(6 10)" -        limit = ( -            "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))," -            "((6 3,9 2,9 4,6 3)))" -        ) -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        t = cr.town -        t.center = "SRID=4326;" + center -        t.limit = "SRID=4326;" + limit -        t.save() -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        bfp = GEOSGeometry(base_find.point_2d.ewkt) -        bfp.transform(4326) -        tp = GEOSGeometry(cr.town.center.ewkt) -        tp.transform(4326) -        self.assertLess(bfp.distance(tp), 0.0001) -        self.assertEqual(base_find.multi_polygon, cr.town.limit) -        self.assertEqual(base_find.point_source, "T")  # town -        self.assertEqual( -            base_find.point_source_item, str(ContextRecord._meta.verbose_name) -        ) -        # re-save do not change sources -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        bfp = GEOSGeometry(base_find.point_2d.ewkt) -        bfp.transform(4326) -        tp = GEOSGeometry(cr.town.center.ewkt) -        tp.transform(4326) -        self.assertTrue(bfp.distance(tp) < 0.0001) -        self.assertEqual(base_find.multi_polygon, cr.town.limit) -        self.assertEqual(base_find.point_source, "T")  # town -        self.assertEqual( -            base_find.point_source_item, str(ContextRecord._meta.verbose_name) -        ) - -        # geom from context record -        center = "POINT(8 6)" -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        cr.point_2d = "SRID=4326;" + center -        cr.point_source = "P" -        cr.point_source_item = str(ContextRecord._meta.verbose_name) -        cr.save() -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        cr.x = cr.point_2d.x -        cr.y = cr.point_2d.y -        cr.save() -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        bfp = GEOSGeometry(base_find.point_2d.ewkt) -        bfp.transform(4326) -        tp = GEOSGeometry(cr.point_2d.ewkt) -        tp.transform(4326) -        self.assertTrue(bfp.distance(tp) < 0.0001) -        self.assertEqual(base_find.multi_polygon, cr.multi_polygon) -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(ContextRecord._meta.verbose_name) -        ) - -        # overload of coordinates by form -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        base_find.x = 5 -        base_find.y = 6 -        base_find.z = 1 -        base_find.spatial_reference_system = srs -        base_find.save() - -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.point) -        self.assertEqual(base_find.point_2d.wkt, "POINT (5 6)") -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) -        # re-save do not change sources -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertIsNotNone(base_find.point) -        self.assertEqual(base_find.point_2d.wkt, "POINT (5 6)") -        self.assertEqual(base_find.point_source, "P")  # precise -        self.assertEqual( -            base_find.point_source_item, str(models.BaseFind._meta.verbose_name) -        ) - -    def test_post_save_polygon(self): -        profile = get_current_profile() -        profile.mapping = True -        profile.save() - -        find = self.finds[0] -        base_find = find.base_finds.all()[0] -        srs, __ = SpatialReferenceSystem.objects.get_or_create( -            txt_idx="wgs84", -            defaults={"srid": 4326, "label": "WGS84", "auth_name": "EPSG"}, -        ) - -        base_find = models.BaseFind.objects.get(pk=base_find.pk) - -        # get centroid geom from poly -        limit = ( -            "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))," -            "((6 3,9 2,9 4,6 3)))" -        ) -        base_find.multi_polygon = "SRID=4326;" + limit -        base_find.point_source = None -        base_find.point_2d = None -        base_find.point = None -        base_find.save() - -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertEqual(base_find.point_source, "M")  # from multi polygon -        # resaving do not change source -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertIsNotNone(base_find.point_2d) -        self.assertEqual(base_find.point_source, "M")  # from multi polygon - -        # geom from context record -        limit = ( -            "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))," -            "((6 3,9 2,9 4,6 3)))" -        ) -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        cr.multi_polygon = "SRID=4326;" + limit -        cr.multi_polygon_source = "P" -        cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name) -        cr.save() -        cr = ContextRecord.objects.get(pk=base_find.context_record.pk) -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        base_find.multi_polygon_source_item = "hop" -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertEqual(base_find.multi_polygon, cr.multi_polygon) -        self.assertEqual(base_find.multi_polygon_source, "P")  # precise -        self.assertEqual( -            base_find.multi_polygon_source_item, str(ContextRecord._meta.verbose_name) -        ) - -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        base_find.point_source = None -        base_find.spatial_reference_system = srs -        base_find.x = "42" -        base_find.y = "3" -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertEqual(base_find.point_2d.ewkt, "SRID=4326;POINT (42 3)") -        self.assertEqual(base_find.point_source, "P") -        # resaving do not change source -        base_find.save() -        base_find = models.BaseFind.objects.get(pk=base_find.pk) -        self.assertEqual(base_find.point_2d.ewkt, "SRID=4326;POINT (42 3)") -        self.assertEqual(base_find.point_source, "P") - -    def test_get_geo_items(self): -        # profile = models.get_current_profile() -        profile = get_current_profile() -        profile.mapping = True -        profile.save() - -        geoms, pks = BaseGeomaticTest.setUpDefaultGeoItems(self.user) -        dics = BaseGeomaticTest.geojson_geo_items(geoms, pks, test_get_geo_items=True) -        url_pts = reverse("api-get-geo-points") -        url_polys = reverse("api-get-geo-polygons") - -        for label in dics.keys(): -            dic = dics[label] -            get_pk = dic["get_pk"] -            pk = pks[label] - -            self.assertEqual(dic["res_polys"], dic["get_polys"]) -            response = self.client.get(url_polys + get_pk + "0") -            self.assertEqual(response.status_code, 404) -            response = self.client.get(url_polys + get_pk + str(pk)) -            self.assertEqual(response.status_code, 200) -            self.assertEqual(dic["get_polys"], json.loads(response.content)) - -            self.assertEqual(dic["get_pts"], dic["res_pts"]) -            response = self.client.get(url_pts + get_pk + "0") -            self.assertEqual(response.status_code, 404) -            response = self.client.get(url_pts + get_pk + str(pk)) -            self.assertEqual(response.status_code, 200) -            self.assertEqual(dic["get_pts"], json.loads(response.content)) - -  class AutocompleteTest(AutocompleteTestBase, TestCase):      fixtures = FIND_FIXTURES      models = [ diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index bfe8e3b11..5980a931a 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -193,7 +193,7 @@ class ImportTest(object):              "associated_group": group.pk,              "csv_sep": sep,          } -        form = forms_common.BaseImportForm( +        form = forms_common.NewImportForm(              data=post_dict, files=file_dict, user=self.user          )          form.is_valid() @@ -1800,9 +1800,11 @@ class ParcelTest(ImportTest, TestCase):          post_response = c.post("/operation-parcels-modify/" + str(operation.pk) + "/", data)          self.assertEqual(post_response.status_code, 200) -        self.assertContains(post_response, _("This parcel is associated with a context " -                                          "record. It can't be deleted.") # How to convert ''' to ' ? -        ) +        res = post_response.content.decode("utf8") +        expected = str( +            _("This parcel is associated with a context record. It can't be deleted.") +        ).replace("'", "'") +        self.assertIn(expected, res)          parcels = models.Parcel.objects.all()          self.assertEqual(parcels.count(), 1) @@ -2675,7 +2677,7 @@ class CustomFormTest(TestCase, OperationInitTest):          step = "selec-operation_modification"          cls_wiz.wizard_post(c, url, step, {"pk": self.operations[0].pk}) -        step = "collaborators-operation_modification" +        step = "relations-operation_modification"          data = {              "{}{}-current_step".format(cls_wiz.url_name, cls_wiz.wizard_name): [step],          } @@ -2683,7 +2685,7 @@ class CustomFormTest(TestCase, OperationInitTest):          self.assertNotEqual(response.status_code, 404)          CustomForm.objects.create(              name="Test2", -            form="operation-020-collaborators", +            form="operation-080-relations",              available=True,              apply_to_all=True,              enabled=False, @@ -4693,7 +4695,7 @@ class ApiTest(OperationInitTest, APITestCase):          response = self.client.post(url, params, follow=True)          self.assertIn( -            str(_("is not a valid JSON message")), +            str(_("is not a valid JSON message")).replace("'", "'"),              response.content.decode(),          ) diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 7671f2fe4..e1290b3de 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -2932,7 +2932,7 @@ class GeoVectorFormTest(TestCase):          edited_geo = models.GeoVectorData.objects.get(              name="Test Geo {}".format(geom_type)          ) -        self.assertRedirects(response, "/geo/edit/{}/".format(edited_geo.pk)) +        self.assertRedirects(response, f"/display/operation/{self.operation.pk}/")          self.assertEqual(edited_geo.name, "Test Geo {}".format(geom_type))          self.assertEqual(edited_geo.origin, self.origin)          self.assertEqual(edited_geo.data_type, self.data_type)  | 
