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)
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)
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(self): feature = Feature(geometry=_geom) geojson = str(feature) geom = self.field.to_python(geojson) self.assertEqual(json.loads(geom.geojson), feature['geometry'])