Compare commits
2 Commits
e443c5f8be
...
21db8227f8
Author | SHA1 | Date | |
---|---|---|---|
21db8227f8 | |||
1773463e86 |
@ -317,7 +317,7 @@ class Geometry(BaseResource):
|
||||
"""
|
||||
geom = self.geom
|
||||
if geom.srid != srid:
|
||||
geom.transform(ct=srid)
|
||||
geom.transform(srid)
|
||||
polygons = [p for p in geom]
|
||||
geojson = {
|
||||
"type": "FeatureCollection",
|
||||
|
@ -15,7 +15,7 @@ DEFAULT_SRID_RLP = 25832
|
||||
|
||||
# Needed to redirect to LANIS
|
||||
## Values to be inserted are [zoom_level, x_coord, y_coord]
|
||||
LANIS_LINK_TEMPLATE = "https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/index.php?lang=de&zl={}&x={}&y={}&bl=tk_rlp_tms_grau&bo=1&lo=0.8,0.8,0.8,0.6,0.8,0.8,0.8,0.8,0.8&layers=eiv_recorded,eiv_unrecorded,kom_recorded,kom_unrecorded,oek_recorded,oek_unrecorded,ema_recorded,ema_unrecorded,mae&service=kartendienste_naturschutz"
|
||||
LANIS_LINK_TEMPLATE = "https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/index.php?lang=de&zl={}&x={}&y={}&bl=tk_rlp_tms_grau&bo=1&lo=0.8,0.8,0.8,0.6,0.8,0.8,0.8,0.8,0.8&layers=eiv_recorded,eiv_unrecorded,eiv_unrecorded_old_entries,kom_recorded,kom_unrecorded,kom_unrecorded_old_entries,oek_recorded,oek_unrecorded,ema_recorded,ema_unrecorded,mae&service=kartendienste_naturschutz"
|
||||
## This look up table (LUT) defines different zoom levels on the size of the calculate area of a geometry.
|
||||
LANIS_ZOOM_LUT = {
|
||||
1000000000: 6,
|
||||
|
@ -5,9 +5,12 @@ Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 15.12.21
|
||||
|
||||
"""
|
||||
import json
|
||||
|
||||
from django.contrib.gis.db.models.functions import Translate
|
||||
|
||||
from konova.models import Geometry, GeometryConflict
|
||||
from konova.sub_settings.lanis_settings import DEFAULT_SRID
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
from konova.utils.schneider.fetcher import ParcelFetcher
|
||||
|
||||
@ -74,3 +77,66 @@ class GeometryTestCase(BaseTestCase):
|
||||
fetcher = ParcelFetcher(geometry=self.geom_1)
|
||||
features = fetcher.get_parcels()
|
||||
self.assertNotEqual(0, len(features), msg="Spatial fetcher get feature did not work!")
|
||||
|
||||
def test_str(self):
|
||||
self.assertEqual(
|
||||
str(self.geom_1),
|
||||
str(self.geom_1.id)
|
||||
)
|
||||
|
||||
def test_get_data_objects(self):
|
||||
num_objs_with_geom = 0
|
||||
self.assertEqual(
|
||||
len(self.geom_1.get_data_objects()),
|
||||
num_objs_with_geom
|
||||
)
|
||||
|
||||
objs = [
|
||||
self.intervention,
|
||||
self.compensation,
|
||||
self.eco_account,
|
||||
self.ema,
|
||||
]
|
||||
for obj in objs:
|
||||
obj.geometry = self.geom_1
|
||||
obj.save()
|
||||
|
||||
num_objs_with_geom += 1
|
||||
geom_objs = self.geom_1.get_data_objects()
|
||||
self.assertEqual(
|
||||
len(geom_objs),
|
||||
num_objs_with_geom
|
||||
)
|
||||
self.assertIn(obj, geom_objs)
|
||||
|
||||
def test_as_feature_collection(self):
|
||||
geometry = self.geom_1.geom
|
||||
polygons = [p for p in geometry]
|
||||
expected_result = {
|
||||
"type": "FeatureCollection",
|
||||
"crs": {
|
||||
"type": "name",
|
||||
"properties": {
|
||||
"name": f"urn:ogc:def:crs:EPSG::{geometry.srid}"
|
||||
}
|
||||
},
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"geometry": json.loads(p.json),
|
||||
}
|
||||
for p in polygons
|
||||
]
|
||||
}
|
||||
result = self.geom_1.as_feature_collection()
|
||||
result = json.dumps(result)
|
||||
expected_result = json.dumps(expected_result)
|
||||
|
||||
self.assertEqual(expected_result, result)
|
||||
|
||||
# Transform geometry into non-default-rlp srid to trigger retransforming in later steps
|
||||
geometry.transform(DEFAULT_SRID)
|
||||
different_result = self.geom_1.as_feature_collection()
|
||||
different_result = json.dumps(result)
|
||||
self.assertNotEqual(different_result, result)
|
||||
|
||||
|
@ -333,7 +333,7 @@ class BaseTestCase(TestCase):
|
||||
"""
|
||||
polygon = Polygon.from_bbox((7.592449, 50.359385, 7.593382, 50.359874))
|
||||
polygon.srid = 4326
|
||||
polygon = polygon.transform(DEFAULT_SRID_RLP, clone=True)
|
||||
polygon.transform(DEFAULT_SRID_RLP)
|
||||
return MultiPolygon(polygon, srid=DEFAULT_SRID_RLP)
|
||||
|
||||
def create_geojson(self, geometry):
|
||||
|
7
user/tests/unit/__init__.py
Normal file
7
user/tests/unit/__init__.py
Normal file
@ -0,0 +1,7 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 12.09.23
|
||||
|
||||
"""
|
149
user/tests/unit/test_forms.py
Normal file
149
user/tests/unit/test_forms.py
Normal file
@ -0,0 +1,149 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: ksp-servicestelle@sgdnord.rlp.de
|
||||
Created on: 12.09.23
|
||||
|
||||
"""
|
||||
from django.test import RequestFactory
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from konova.tests.test_views import BaseTestCase
|
||||
from user.forms.modals.team import NewTeamModalForm, EditTeamModalForm
|
||||
from user.models import Team
|
||||
|
||||
|
||||
class NewTeamModalFormTestCase(BaseTestCase):
|
||||
|
||||
def setUp(self) -> None:
|
||||
super().setUp()
|
||||
self.request = RequestFactory().request()
|
||||
self.request.user = self.user
|
||||
|
||||
def test_init(self):
|
||||
form = NewTeamModalForm(
|
||||
request=self.request
|
||||
)
|
||||
self.assertEqual(form.form_title, str(_("Create new team")))
|
||||
self.assertEqual(form.form_caption, str(_("You will become the administrator for this group by default. You do not need to add yourself to the list of members.")))
|
||||
self.assertEqual(form.action_url, reverse("user:team-new"))
|
||||
self.assertEqual(form.cancel_redirect, reverse("user:team-index"))
|
||||
self.assertEqual(form.request, self.request)
|
||||
self.assertEqual(form.user, self.request.user)
|
||||
|
||||
def test_is_valid(self):
|
||||
invalid_data = {
|
||||
"name": self.team.name,
|
||||
"description": "Test description",
|
||||
"members": [self.superuser.id,],
|
||||
}
|
||||
form = NewTeamModalForm(
|
||||
invalid_data,
|
||||
request=self.request
|
||||
)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertTrue(form.has_error("name"))
|
||||
|
||||
valid_data = invalid_data
|
||||
valid_data["name"] = self.team.name + "_OTHER"
|
||||
|
||||
form = NewTeamModalForm(
|
||||
invalid_data,
|
||||
request=self.request
|
||||
)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_save(self):
|
||||
valid_data = {
|
||||
"name": self.team.name + "_OTHER",
|
||||
"description": "Test description",
|
||||
"members": [self.superuser.id,],
|
||||
}
|
||||
form = NewTeamModalForm(
|
||||
valid_data,
|
||||
request=self.request
|
||||
)
|
||||
self.assertTrue(form.is_valid())
|
||||
obj = form.save()
|
||||
self.assertEqual(obj.name, valid_data["name"])
|
||||
self.assertEqual(obj.description, valid_data["description"])
|
||||
users = obj.users.all()
|
||||
admins = obj.admins.all()
|
||||
self.assertIn(self.request.user, users)
|
||||
self.assertIn(self.request.user, admins)
|
||||
self.assertIn(self.superuser, users)
|
||||
self.assertNotIn(self.superuser, admins)
|
||||
|
||||
|
||||
class EditTeamModalFormTestCase(NewTeamModalFormTestCase):
|
||||
|
||||
def test_init(self):
|
||||
self.team.admins.add(self.superuser)
|
||||
|
||||
form = EditTeamModalForm(request=self.request, instance=self.team)
|
||||
self.assertEqual(form.form_title, str(_("Edit team")))
|
||||
self.assertEqual(form.action_url, reverse("user:team-edit", args=(self.team.id,)))
|
||||
self.assertEqual(form.cancel_redirect, reverse("user:team-index"))
|
||||
|
||||
self.assertEqual(form.fields["name"].initial, self.team.name)
|
||||
self.assertEqual(form.fields["description"].initial, self.team.description)
|
||||
self.assertEqual(form.fields["members"].initial.count(), 1)
|
||||
self.assertIn(self.superuser, form.fields["members"].initial)
|
||||
self.assertEqual(form.fields["admins"].initial.count(), 1)
|
||||
self.assertIn(self.superuser, form.fields["admins"].initial)
|
||||
|
||||
def test_is_valid(self):
|
||||
data = {
|
||||
"name": self.team.name,
|
||||
"description": self.team.description,
|
||||
"members": self.team.users.values_list("id", flat=True),
|
||||
"admins": self.team.admins.values_list("id", flat=True),
|
||||
}
|
||||
form = EditTeamModalForm(
|
||||
data,
|
||||
request=self.request,
|
||||
instance=self.team
|
||||
)
|
||||
|
||||
# Error 1: Admin not in user list
|
||||
self.team.users.set([self.superuser])
|
||||
self.team.admins.set([self.user])
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertTrue(form.has_error("admins"))
|
||||
|
||||
# Error 2: Admin list empty
|
||||
self.team.admins.set([])
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertTrue(form.has_error("admins"))
|
||||
|
||||
# Error 3: Name taken
|
||||
other_team = Team.objects.create(
|
||||
name=self.team.name
|
||||
)
|
||||
self.team.admins.set([self.superuser])
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertTrue(form.has_error("name"))
|
||||
|
||||
def test_save(self):
|
||||
data = {
|
||||
"name": self.team.name + "_EDITED",
|
||||
"description": self.team.description + "_EDITED",
|
||||
"members": [self.user.id, self.superuser.id,],
|
||||
"admins": [self.user.id,],
|
||||
}
|
||||
form = EditTeamModalForm(
|
||||
data,
|
||||
request=self.request,
|
||||
instance=self.team
|
||||
)
|
||||
self.assertTrue(form.is_valid(), msg=form.errors)
|
||||
obj = form.save()
|
||||
self.assertEqual(obj.name, data["name"])
|
||||
self.assertEqual(obj.description, data["description"])
|
||||
self.assertIn(self.user, obj.users.all())
|
||||
self.assertIn(self.superuser, obj.users.all())
|
||||
self.assertIn(self.user, obj.admins.all())
|
||||
self.assertEqual(obj.admins.count(), 1)
|
||||
self.assertEqual(obj.users.count(), 2)
|
||||
|
Loading…
Reference in New Issue
Block a user