Skip to content

Commit 8d43d52

Browse files
committed
Add unit test for f947ffb
1 parent 40c790f commit 8d43d52

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

tests/src/python/test_qgsvectorlayer.py

+35
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,41 @@ def testSetDataSource(self):
358358
self.assertNotEqual(layer.renderer(), r)
359359
self.assertEqual(layer.renderer().symbol().type(), QgsSymbol.Line)
360360

361+
def testSetDataSourceInvalidToValid(self):
362+
"""
363+
Test that changing an invalid layer path to valid maintains the renderer
364+
"""
365+
layer = createLayerWithOnePoint()
366+
layer.setCrs(QgsCoordinateReferenceSystem("epsg:3111"))
367+
r = QgsSingleSymbolRenderer(QgsSymbol.defaultSymbol(QgsWkbTypes.PointGeometry))
368+
layer.setRenderer(r)
369+
self.assertEqual(layer.renderer().symbol().type(), QgsSymbol.Marker)
370+
371+
# change to invalid path
372+
options = QgsDataProvider.ProviderOptions()
373+
layer.setDataSource('nothing', 'new name', 'ogr', options)
374+
375+
self.assertFalse(layer.isValid())
376+
# these properties should be kept intact!
377+
self.assertEqual(layer.name(), 'new name')
378+
self.assertEqual(layer.wkbType(), QgsWkbTypes.Point)
379+
self.assertEqual(layer.crs().authid(), 'EPSG:3111')
380+
# should have kept the same renderer!
381+
self.assertEqual(layer.renderer(), r)
382+
383+
# set to a valid path
384+
points_path = os.path.join(unitTestDataPath(), 'points.shp')
385+
layer.setDataSource(points_path, 'new name2', 'ogr', options)
386+
387+
self.assertTrue(layer.isValid())
388+
self.assertEqual(layer.name(), 'new name2')
389+
self.assertEqual(layer.wkbType(), QgsWkbTypes.Point)
390+
self.assertEqual(layer.crs().authid(), 'EPSG:4326')
391+
self.assertIn(points_path, layer.dataProvider().dataSourceUri())
392+
393+
# should STILL have kept renderer!
394+
self.assertEqual(layer.renderer(), r)
395+
361396
def test_layer_crs(self):
362397
"""
363398
Test that spatial layers have CRS, and non-spatial don't

0 commit comments

Comments
 (0)