spatial-d4science/ckanext/spatial/tests/test_model.py

61 lines
2.0 KiB
Python
Raw Normal View History

2011-10-17 00:40:19 +02:00
import logging
from pprint import pprint
from geoalchemy import WKTSpatialElement
from shapely.geometry import asShape
from ckan.model import Session, Package
from ckan.lib.helpers import json
from ckan.tests import CreateTestData
from ckanext.spatial.model import PackageExtent
from ckanext.spatial.tests import SpatialTestBase
log = logging.getLogger(__name__)
class TestPackageExtent(SpatialTestBase):
def setup(self):
CreateTestData.create()
def teardown(self):
CreateTestData.delete()
def test_create_extent(self):
package = Package.get('annakarenina')
assert package
geojson = json.loads(self.geojson_examples['point'])
shape = asShape(geojson)
package_extent = PackageExtent(package_id=package.id,the_geom=WKTSpatialElement(shape.wkt, self.db_srid))
package_extent.save()
assert package_extent.package_id == package.id
assert Session.scalar(package_extent.the_geom.x) == geojson['coordinates'][0]
assert Session.scalar(package_extent.the_geom.y) == geojson['coordinates'][1]
assert Session.scalar(package_extent.the_geom.srid) == self.db_srid
def test_update_extent(self):
package = Package.get('annakarenina')
geojson = json.loads(self.geojson_examples['point'])
shape = asShape(geojson)
package_extent = PackageExtent(package_id=package.id,the_geom=WKTSpatialElement(shape.wkt, self.db_srid))
package_extent.save()
assert Session.scalar(package_extent.the_geom.geometry_type) == 'ST_Point'
# Update the geometry (Point -> Polygon)
geojson = json.loads(self.geojson_examples['polygon'])
shape = asShape(geojson)
package_extent.the_geom=WKTSpatialElement(shape.wkt, self.db_srid)
package_extent.save()
assert package_extent.package_id == package.id
assert Session.scalar(package_extent.the_geom.geometry_type) == 'ST_Polygon'
assert Session.scalar(package_extent.the_geom.srid) == self.db_srid