diff options
Diffstat (limited to 'archaeological_finds/tests.py')
| -rw-r--r-- | archaeological_finds/tests.py | 90 | 
1 files changed, 89 insertions, 1 deletions
| diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index a56c997eb..00a45ba6a 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -1596,6 +1596,18 @@ class GeomaticTest(FindInit, TestCase):          self.assertEqual(base_find.point_source_item,                           unicode(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, +                         unicode(models.BaseFind._meta.verbose_name)) +          # form input          base_find.x = 2          base_find.y = 3 @@ -1608,6 +1620,14 @@ class GeomaticTest(FindInit, TestCase):          self.assertEqual(base_find.point_source, 'P')  # precise          self.assertEqual(base_find.point_source_item,                           unicode(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, +                         unicode(models.BaseFind._meta.verbose_name))          # reinit          base_find.x = None @@ -1637,7 +1657,24 @@ class GeomaticTest(FindInit, TestCase):          cr = ContextRecord.objects.get(pk=base_find.context_record.pk)          base_find = models.BaseFind.objects.get(pk=base_find.pk)          base_find.save() -        self.assertEqual(base_find.point_2d, cr.town.center) +        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, +                         unicode(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, @@ -1658,4 +1695,55 @@ class GeomaticTest(FindInit, TestCase):          self.assertEqual(base_find.point_source, 'P')  # precise          self.assertEqual(base_find.point_source_item,                           unicode(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, +                         unicode(models.BaseFind._meta.verbose_name)) + +    def test_post_save_polygon(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'} +        ) + +        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 +        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') | 
