summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py90
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')