def test_create_log(self): from datetime import datetime from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers from c2cgeoportal.models import Metadata from c2cgeoportal.models import DBSession, User self.assertEqual( DBSession.query(User.username).all(), [("__test_user", )]) metadatas = [ Metadata("lastUpdateDateColumn", "last_update_date"), Metadata("lastUpdateUserColumn", "last_update_user"), ] layer_id = self._create_layer(metadatas=metadatas) request = self._get_request(layer_id, username="******") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}]}' # noqa layers = Layers(request) collection = layers.create() self.assertEqual(request.response.status_int, 201) self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEqual(len(collection.features), 1) properties = collection.features[0] self.assertEqual(request.user.username, "__test_user") self.assertEqual(properties.last_update_user, request.user.id) self.assertIsInstance(properties.last_update_date, datetime)
def test_create_none_area(self): from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers layer_id = self._create_layer(none_area=True) request = self._get_request(layer_id, username=u"__test_user") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}]}' # noqa layers = Layers(request) collection = layers.create() self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEquals(len(collection.features), 2)
def test_create_validation_fails(self): from c2cgeoportal.views.layers import Layers layer_id = self._create_layer() request = self._get_request(layer_id, username=u"__test_user") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "LineString", "coordinates": [[5, 45], [5, 45]]}}]}' # noqa layers = Layers(request) response = layers.create() self.assertEquals(request.response.status_int, 400) self.assertTrue("validation_error" in response) self.assertEquals(response["validation_error"], "Too few points in geometry component[5 45]")
def test_create_none_area(self): from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers layer_id = self._create_layer(none_area=True) request = self._get_request(layer_id, username=u'__test_user') request.method = 'POST' request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}]}' # NOQA layers = Layers(request) collection = layers.create() self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEquals(len(collection.features), 2)
def test_create_validation_fails(self): from c2cgeoportal.views.layers import Layers layer_id = self._create_layer() request = self._get_request(layer_id, username=u"__test_user") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "LineString", "coordinates": [[5, 45], [5, 45]]}}]}' # noqa layers = Layers(request) response = layers.create() self.assertEquals(request.response.status_int, 400) self.assertTrue("validation_error" in response) self.assertEquals(response["validation_error"], "Too few points in geometry component[5 45]")
def test_create_no_validation(self): from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers from c2cgeoportal.models import Metadata metadatas = [Metadata("geometryValidation", "False")] layer_id = self._create_layer(metadatas=metadatas, geom_type=False) request = self._get_request(layer_id, username="******") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "LineString", "coordinates": [[5, 45], [5, 45]]}}]}' # noqa layers = Layers(request) collection = layers.create() self.assertEqual(request.response.status_int, 201) self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEqual(len(collection.features), 2)
def test_create_no_validation(self): from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers from c2cgeoportal.models import Metadata metadatas = [ Metadata("geometry_validation", "False") ] layer_id = self._create_layer(metadatas=metadatas, geom_type=False) request = self._get_request(layer_id, username=u"__test_user") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}, {"type": "Feature", "properties": {"text": "foo", "child": "c2é"}, "geometry": {"type": "LineString", "coordinates": [[5, 45], [5, 45]]}}]}' # noqa layers = Layers(request) collection = layers.create() self.assertEquals(request.response.status_int, 201) self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEquals(len(collection.features), 2)
def test_create_log(self): from datetime import datetime from geojson.feature import FeatureCollection from c2cgeoportal.views.layers import Layers from c2cgeoportal.models import Metadata metadatas = [ Metadata("lastUpdateDateColumn", "last_update_date"), Metadata("lastUpdateUserColumn", "last_update_user"), ] layer_id = self._create_layer(metadatas=metadatas) request = self._get_request(layer_id, username=u"__test_user") request.method = "POST" request.body = '{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "foo", "child": "c1é"}, "geometry": {"type": "Point", "coordinates": [5, 45]}}]}' # noqa layers = Layers(request) collection = layers.create() self.assertEquals(request.response.status_int, 201) self.assertTrue(isinstance(collection, FeatureCollection)) self.assertEquals(len(collection.features), 1) properties = collection.features[0] self.assertEquals(properties.last_update_user, request.user.id) self.assertIsInstance(properties.last_update_date, datetime)