summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-19 20:12:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-24 19:38:56 +0200
commit0e34062d370da99b1c1711a0045bd639d1add20e (patch)
treea25c51fe15544468460b93825f8b12d926c05de9 /archaeological_finds/tests.py
parent34868fbe8f2f733d4d8513c8f5f2b0656f62abff (diff)
downloadIshtar-0e34062d370da99b1c1711a0045bd639d1add20e.tar.bz2
Ishtar-0e34062d370da99b1c1711a0045bd639d1add20e.zip
Geom: fi x, y overload by form - geo tests
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py98
1 files changed, 97 insertions, 1 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 7303ed56d..9efd6ac79 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -22,6 +22,7 @@ import json
from django.conf import settings
from django.contrib.auth.models import User, Permission, ContentType
+from django.contrib.gis.geos import GEOSGeometry
from django.core.files import File
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.urlresolvers import reverse
@@ -31,7 +32,7 @@ from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
from django.utils.translation import pgettext_lazy, gettext_lazy as _
from ishtar_common.models import Person, get_current_profile, UserProfile, \
- Town, Area, Document
+ Town, Area, Document, SpatialReferenceSystem
from archaeological_context_records.models import Period, Dating, \
ContextRecord, DatingType, DatingQuality
from archaeological_finds import models, views
@@ -1444,3 +1445,98 @@ class TreatmentTest(FindInit, TestCase):
self.assertEqual(q.count(), 1)
initial_find = q.all()[0]
self.assertEqual(initial_find.upstream_treatment, None)
+
+
+class GeomaticTest(FindInit, TestCase):
+ fixtures = FIND_FIXTURES
+ model = models.Find
+
+ def setUp(self):
+ self.create_finds(data_base={"label": u"Find 1"}, force=True)
+
+ 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'}
+ )
+
+ # 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,
+ unicode(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,
+ unicode(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()
+ self.assertEqual(base_find.point_2d, cr.town.center)
+ 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))
+
+ # 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,
+ unicode(models.BaseFind._meta.verbose_name))
+