def setUp(self):
     super(FeatureSerializerTestCase, self).setUp()
     attrs = {'id': 1,
              'crs': 4326,
              'geometry': {'type': 'Polygon',
                           'coordinates': self.coords},
              'properties': {'name': 'Argentina'}}
     self.expected = Feature(**attrs)
class FeatureSerializerTestCase(ModelTestCase):
    def setUp(self):
        super(FeatureSerializerTestCase, self).setUp()
        attrs = {'id': 1,
                 'crs': 4326,
                 'geometry': {'type': 'Polygon',
                              'coordinates': self.coords},
                 'properties': {'name': 'Argentina'}}
        self.expected = Feature(**attrs)

    def test_serialize(self):
        serializer = LocationFeatureSerializer(self.obj)
        self.assertEqual(serializer.data, self.expected)

    def test_serialize_list(self):
        serializer = LocationFeatureSerializer([self.obj], many=True)
        feat = self.expected.copy()
        feat.pop('crs')
        self.assertEqual(serializer.data, FeatureCollection([feat]))

    def test_serialize_queryset(self):
        serializer = LocationFeatureSerializer(
            Location.objects.all(), many=True)
        feat = self.expected.copy()
        crs = feat.pop('crs')
        self.assertEqual(serializer.data['features'][0], feat)
        self.assertEqual(serializer.data['crs'], crs)

    def test_deserialize(self):
        serializer = LocationFeatureSerializer(data=self.expected)
        self.assertTrue(serializer.is_valid())
        self.assertEqual(serializer.object.geom, self.obj.geom)

    def test_deserialize_projected(self):
        feat = Feature(**dict(self.expected, crs=4269)).copy()
        serializer = LocationFeatureSerializer(data=feat)
        self.assertTrue(serializer.is_valid())
        self.assertEqual(serializer.object.geom.srid, 4269)

    def test_deserialize_list(self):
        features = [self.expected.copy(), self.expected.copy()]
        serializer = LocationFeatureSerializer(data=features, many=True)
        self.assertTrue(serializer.is_valid())
        self.assertEqual(serializer.object[0].geom, self.obj.geom)
class FeatureSerializerTestCase(ModelTestCase):
    def setUp(self):
        super(FeatureSerializerTestCase, self).setUp()
        attrs = {'id': 1,
                 'crs': 4326,
                 'geometry': {'type': 'Polygon',
                              'coordinates': self.coords},
                 'properties': {'name': 'Argentina'}}
        self.expected = Feature(**attrs)

    def test_geometry_field_source(self):
        response = self.client.get('/locations/', {'format': 'geojson', 'page': 1})
        context = {k: v for k, v in response.renderer_context.items()
                   if k in ('request', 'view')}
        serializer = LocationFeatureSerializer(
            Location.objects.annotate(geojson=functions.AsGeoJSON('geom')),
            many=True, context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')
        # Test serializing paginated objects.
        page = response.renderer_context['view'].paginator.page
        serializer = LocationFeatureSerializer(
            page, many=True, context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')

    def test_serialize(self):
        serializer = LocationFeatureSerializer(self.obj)
        self.assertEqual(serializer.data, self.expected)

    def test_serialize_list(self):
        serializer = LocationFeatureSerializer([self.obj], many=True)
        feat = self.expected.copy()
        feat.pop('crs')
        self.assertEqual(serializer.data, FeatureCollection([feat]))

    def test_serialize_queryset(self):
        serializer = LocationFeatureSerializer(
            Location.objects.all(), many=True)
        feat = self.expected.copy()
        crs = feat.pop('crs')
        self.assertEqual(serializer.data['features'][0], feat)
        self.assertEqual(serializer.data['crs'], crs)

    def test_serialize_queryset_simplify(self):
        fn = query.Simplify(functions.Transform('geom', 4269), 1.01)
        qs = Location.objects.all()
        for obj in qs:
            obj.geom = obj.geom.buffer(1.5)
            obj.save()
        qs = qs.annotate(simplify=fn)
        obj = qs[0]
        serializer = SimplifyLocationSerializer(obj)
        g = geos.GEOSGeometry(json.dumps(serializer.data['geometry']),
                              srid=obj.simplify.srid)
        self.assertEqual(g, obj.simplify)
        self.assertEqual(obj.simplify.srid, 4269)
        self.assertEqual(serializer.data['crs']['properties']['name'][-4:], '4269')

    def test_deserialize(self):
        serializer = LocationFeatureSerializer(data=self.expected)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom, self.obj.geom)

    def test_deserialize_projected(self):
        feat = Feature(**dict(self.expected, crs=4269)).copy()
        serializer = LocationFeatureSerializer(data=feat)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom.srid, 4269)

    def test_deserialize_list(self):
        features = [self.expected.copy(), self.expected.copy()]
        serializer = LocationFeatureSerializer(data=features, many=True)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object[0].geom, self.obj.geom)
class FeatureSerializerTestCase(ModelTestCase):
    def setUp(self):
        super(FeatureSerializerTestCase, self).setUp()
        attrs = {'id': 1,
                 'crs': 4326,
                 'geometry': {'type': 'Polygon',
                              'coordinates': self.coords},
                 'properties': {'name': 'Argentina'}}
        self.expected = Feature(**attrs)

    def test_geometry_field_source(self):
        request = factory.get('/', {'format': 'geojson', 'page': 1})
        response = PaginatedGeoListView.as_view()(request)
        context = {'request': response,
                   'view': response.renderer_context['view']}
        serializer = LocationFeatureSerializer(
            Location.objects.geojson(), many=True, context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')
        # Test serializing paginated objects.
        page = response.renderer_context['view'].paginator.page
        serializer = LocationFeatureSerializer(
            page, many=True, context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')

    def test_serialize(self):
        serializer = LocationFeatureSerializer(self.obj)
        self.assertEqual(serializer.data, self.expected)

    def test_serialize_list(self):
        serializer = LocationFeatureSerializer([self.obj], many=True)
        feat = self.expected.copy()
        feat.pop('crs')
        self.assertEqual(serializer.data, FeatureCollection([feat]))

    def test_serialize_queryset(self):
        serializer = LocationFeatureSerializer(
            Location.objects.all(), many=True)
        feat = self.expected.copy()
        crs = feat.pop('crs')
        self.assertEqual(serializer.data['features'][0], feat)
        self.assertEqual(serializer.data['crs'], crs)

    def test_deserialize(self):
        serializer = LocationFeatureSerializer(data=self.expected)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom, self.obj.geom)

    def test_deserialize_projected(self):
        feat = Feature(**dict(self.expected, crs=4269)).copy()
        serializer = LocationFeatureSerializer(data=feat)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom.srid, 4269)

    def test_deserialize_list(self):
        features = [self.expected.copy(), self.expected.copy()]
        serializer = LocationFeatureSerializer(data=features, many=True)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object[0].geom, self.obj.geom)
 def test_feature_srid(self):
     srid = 3857
     feature = Feature(geometry=_geom, crs=NamedCRS(srid))
     geom = self.field.to_python(str(feature))
     self.assertEqual(geom.srid, srid)
 def test_feature_to_python(self):
     feature = Feature(geometry=_geom)
     self.fp.write(str(feature))
     self.fp.seek(0)
     v = self.field.to_python(self.fp)
     self.assertIsInstance(v, OGRGeometry)
 def test_crs_epsg(self):
     self.assertEqual(Feature(crs=3310)['crs'], self.crs)
 def test_str(self):
     feat = Feature(properties={'event': datetime.date(1899, 1, 1)})
     self.assertIn('"properties": {"event": "1899-01-01"}}', str(feat))
 def test_crs(self):
     feat = Feature(crs=self.crs)
     self.assertEqual(feat['crs'], self.crs)
 def test_copy(self):
     self.assertIsInstance(Feature().copy(), Feature)
Exemple #11
0
 def test_deserialize_projected(self):
     feat = Feature(**dict(self.expected, crs=4269)).copy()
     serializer = LocationFeatureSerializer(data=feat)
     self.assertTrue(serializer.is_valid())
     object = serializer.save()
     self.assertEqual(object.geom.srid, 4269)
Exemple #12
0
class FeatureSerializerTestCase(ModelTestCase):
    def setUp(self):
        super(FeatureSerializerTestCase, self).setUp()
        attrs = {
            'id': 1,
            'crs': 4326,
            'geometry': {
                'type': 'Polygon',
                'coordinates': self.coords
            },
            'properties': {
                'name': 'Argentina'
            }
        }
        self.expected = Feature(**attrs)

    def test_geometry_field_source(self):
        request = factory.get('/', {'format': 'geojson', 'page': 1})
        response = PaginatedGeoListView.as_view()(request)
        context = {
            'request': response,
            'view': response.renderer_context['view']
        }
        serializer = LocationFeatureSerializer(Location.objects.geojson(),
                                               many=True,
                                               context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')
        # Test serializing paginated objects.
        page = response.renderer_context['view'].paginator.page
        serializer = LocationFeatureSerializer(page,
                                               many=True,
                                               context=context)
        fields = serializer.child.fields
        self.assertEqual(fields['geom'].source, 'geojson')

    def test_serialize(self):
        serializer = LocationFeatureSerializer(self.obj)
        self.assertEqual(serializer.data, self.expected)

    def test_serialize_list(self):
        serializer = LocationFeatureSerializer([self.obj], many=True)
        feat = self.expected.copy()
        feat.pop('crs')
        self.assertEqual(serializer.data, FeatureCollection([feat]))

    def test_serialize_queryset(self):
        serializer = LocationFeatureSerializer(Location.objects.all(),
                                               many=True)
        feat = self.expected.copy()
        crs = feat.pop('crs')
        self.assertEqual(serializer.data['features'][0], feat)
        self.assertEqual(serializer.data['crs'], crs)

    def test_deserialize(self):
        serializer = LocationFeatureSerializer(data=self.expected)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom, self.obj.geom)

    def test_deserialize_projected(self):
        feat = Feature(**dict(self.expected, crs=4269)).copy()
        serializer = LocationFeatureSerializer(data=feat)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object.geom.srid, 4269)

    def test_deserialize_list(self):
        features = [self.expected.copy(), self.expected.copy()]
        serializer = LocationFeatureSerializer(data=features, many=True)
        self.assertTrue(serializer.is_valid())
        object = serializer.save()
        self.assertEqual(object[0].geom, self.obj.geom)
Exemple #13
0
 def test_feature(self):
     feature = Feature(geometry=_geom)
     geojson = str(feature)
     geom = self.field.to_python(geojson)
     self.assertEqual(json.loads(geom.geojson), feature['geometry'])