Test update
* updates tests for SRID migration
This commit is contained in:
		
							parent
							
								
									0e7859e538
								
							
						
					
					
						commit
						dacfbd0504
					
				@ -12,6 +12,7 @@ from django.contrib.gis import geos
 | 
				
			|||||||
from django.urls import reverse
 | 
					from django.urls import reverse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from api.tests.v1.share.test_api_sharing import BaseAPIV1TestCase
 | 
					from api.tests.v1.share.test_api_sharing import BaseAPIV1TestCase
 | 
				
			||||||
 | 
					from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
					class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
				
			||||||
@ -63,6 +64,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        put_props = put_body["properties"]
 | 
					        put_props = put_body["properties"]
 | 
				
			||||||
        put_geom = geos.fromstr(json.dumps(put_body))
 | 
					        put_geom = geos.fromstr(json.dumps(put_body))
 | 
				
			||||||
 | 
					        put_geom.transform(DEFAULT_SRID_RLP)
 | 
				
			||||||
        self.assertEqual(put_geom, self.intervention.geometry.geom)
 | 
					        self.assertEqual(put_geom, self.intervention.geometry.geom)
 | 
				
			||||||
        self.assertEqual(put_props["title"], self.intervention.title)
 | 
					        self.assertEqual(put_props["title"], self.intervention.title)
 | 
				
			||||||
        self.assertNotEqual(modified_on, self.intervention.modified)
 | 
					        self.assertNotEqual(modified_on, self.intervention.modified)
 | 
				
			||||||
@ -92,6 +94,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        put_props = put_body["properties"]
 | 
					        put_props = put_body["properties"]
 | 
				
			||||||
        put_geom = geos.fromstr(json.dumps(put_body))
 | 
					        put_geom = geos.fromstr(json.dumps(put_body))
 | 
				
			||||||
 | 
					        put_geom.transform(DEFAULT_SRID_RLP)
 | 
				
			||||||
        self.assertEqual(put_geom, self.compensation.geometry.geom)
 | 
					        self.assertEqual(put_geom, self.compensation.geometry.geom)
 | 
				
			||||||
        self.assertEqual(put_props["title"], self.compensation.title)
 | 
					        self.assertEqual(put_props["title"], self.compensation.title)
 | 
				
			||||||
        self.assertNotEqual(modified_on, self.compensation.modified)
 | 
					        self.assertNotEqual(modified_on, self.compensation.modified)
 | 
				
			||||||
@ -121,6 +124,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        put_props = put_body["properties"]
 | 
					        put_props = put_body["properties"]
 | 
				
			||||||
        put_geom = geos.fromstr(json.dumps(put_body))
 | 
					        put_geom = geos.fromstr(json.dumps(put_body))
 | 
				
			||||||
 | 
					        put_geom.transform(DEFAULT_SRID_RLP)
 | 
				
			||||||
        self.assertEqual(put_geom, self.eco_account.geometry.geom)
 | 
					        self.assertEqual(put_geom, self.eco_account.geometry.geom)
 | 
				
			||||||
        self.assertEqual(put_props["title"], self.eco_account.title)
 | 
					        self.assertEqual(put_props["title"], self.eco_account.title)
 | 
				
			||||||
        self.assertNotEqual(modified_on, self.eco_account.modified)
 | 
					        self.assertNotEqual(modified_on, self.eco_account.modified)
 | 
				
			||||||
@ -152,6 +156,7 @@ class APIV1UpdateTestCase(BaseAPIV1TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        put_props = put_body["properties"]
 | 
					        put_props = put_body["properties"]
 | 
				
			||||||
        put_geom = geos.fromstr(json.dumps(put_body))
 | 
					        put_geom = geos.fromstr(json.dumps(put_body))
 | 
				
			||||||
 | 
					        put_geom.transform(DEFAULT_SRID_RLP)
 | 
				
			||||||
        self.assertEqual(put_geom, self.ema.geometry.geom)
 | 
					        self.assertEqual(put_geom, self.ema.geometry.geom)
 | 
				
			||||||
        self.assertEqual(put_props["title"], self.ema.title)
 | 
					        self.assertEqual(put_props["title"], self.ema.title)
 | 
				
			||||||
        self.assertNotEqual(modified_on, self.ema.modified)
 | 
					        self.assertNotEqual(modified_on, self.ema.modified)
 | 
				
			||||||
 | 
				
			|||||||
@ -12,6 +12,7 @@ from django.contrib.gis import geos
 | 
				
			|||||||
from django.contrib.gis.geos import GEOSGeometry
 | 
					from django.contrib.gis.geos import GEOSGeometry
 | 
				
			||||||
from django.core.paginator import Paginator
 | 
					from django.core.paginator import Paginator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
 | 
				
			||||||
from konova.utils.message_templates import DATA_UNSHARED
 | 
					from konova.utils.message_templates import DATA_UNSHARED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -133,6 +134,8 @@ class AbstractModelAPISerializer:
 | 
				
			|||||||
        if isinstance(geojson, dict):
 | 
					        if isinstance(geojson, dict):
 | 
				
			||||||
            geojson = json.dumps(geojson)
 | 
					            geojson = json.dumps(geojson)
 | 
				
			||||||
        geometry = geos.fromstr(geojson)
 | 
					        geometry = geos.fromstr(geojson)
 | 
				
			||||||
 | 
					        if geometry.srid != DEFAULT_SRID_RLP:
 | 
				
			||||||
 | 
					            geometry.transform(DEFAULT_SRID_RLP)
 | 
				
			||||||
        if geometry.empty:
 | 
					        if geometry.empty:
 | 
				
			||||||
            geometry = None
 | 
					            geometry = None
 | 
				
			||||||
        return geometry
 | 
					        return geometry
 | 
				
			||||||
 | 
				
			|||||||
@ -369,14 +369,14 @@ class SimpleGeomForm(BaseForm):
 | 
				
			|||||||
            if self.instance is None or self.instance.geometry is None:
 | 
					            if self.instance is None or self.instance.geometry is None:
 | 
				
			||||||
                raise LookupError
 | 
					                raise LookupError
 | 
				
			||||||
            geometry = self.instance.geometry
 | 
					            geometry = self.instance.geometry
 | 
				
			||||||
            geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID))
 | 
					            geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP))
 | 
				
			||||||
            geometry.modified = action
 | 
					            geometry.modified = action
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            geometry.save()
 | 
					            geometry.save()
 | 
				
			||||||
        except LookupError:
 | 
					        except LookupError:
 | 
				
			||||||
            # No geometry or linked instance holding a geometry exist --> create a new one!
 | 
					            # No geometry or linked instance holding a geometry exist --> create a new one!
 | 
				
			||||||
            geometry = Geometry.objects.create(
 | 
					            geometry = Geometry.objects.create(
 | 
				
			||||||
                geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
 | 
					                geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID_RLP)),
 | 
				
			||||||
                created=action,
 | 
					                created=action,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        # Start the parcel update procedure in a background process
 | 
					        # Start the parcel update procedure in a background process
 | 
				
			||||||
 | 
				
			|||||||
@ -21,8 +21,7 @@ class Geometry(BaseResource):
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    Geometry model
 | 
					    Geometry model
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    from konova.settings import DEFAULT_SRID
 | 
					    geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID_RLP)
 | 
				
			||||||
    geom = MultiPolygonField(null=True, blank=True, srid=DEFAULT_SRID)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return str(self.id)
 | 
					        return str(self.id)
 | 
				
			||||||
 | 
				
			|||||||
@ -430,15 +430,13 @@ class BaseTestCase(TestCase):
 | 
				
			|||||||
            self.assertTrue(True)
 | 
					            self.assertTrue(True)
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tolerance = 0.001
 | 
				
			||||||
        if geom1.srid != geom2.srid:
 | 
					        if geom1.srid != geom2.srid:
 | 
				
			||||||
            tolerance = 0.001
 | 
					 | 
				
			||||||
            # Due to prior possible transformation of any of these geometries, we need to make sure there exists a
 | 
					            # Due to prior possible transformation of any of these geometries, we need to make sure there exists a
 | 
				
			||||||
            # transformation from one coordinate system into the other, which is valid
 | 
					            # transformation from one coordinate system into the other, which is valid
 | 
				
			||||||
            geom1_t = geom1.transform(geom2.srid, clone=True)
 | 
					            geom1.transform(geom2.srid)
 | 
				
			||||||
            geom2_t = geom2.transform(geom1.srid, clone=True)
 | 
					            geom2.transform(geom1.srid)
 | 
				
			||||||
            self.assertTrue(geom1_t.equals_exact(geom2, tolerance) or geom2_t.equals_exact(geom1, tolerance))
 | 
					        self.assertTrue(geom1.equals_exact(geom2, tolerance) or geom2.equals_exact(geom1, tolerance))
 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            self.assertTrue(geom1.equals(geom2))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BaseViewTestCase(BaseTestCase):
 | 
					class BaseViewTestCase(BaseTestCase):
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user