Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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]")
Пример #4
0
    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)
Пример #5
0
    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]")
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)