@@ -48,6 +48,7 @@ def testLayerOrderUpdatedThroughBridge(self):
4848 "layer2" , "memory" )
4949 layer3 = QgsVectorLayer ("Point?field=fldtxt:string" ,
5050 "layer3" , "memory" )
51+
5152 prj .addMapLayers ([layer , layer2 , layer3 ])
5253
5354 canvas = QgsMapCanvas ()
@@ -131,6 +132,41 @@ def testCustomLayerOrderUpdatedFromProject(self):
131132 self .assertEqual ([l for l in prj .layerTreeRoot ().layerOrder ()], [layer2 , layer , layer3 ])
132133 self .assertFalse (prj .layerTreeRoot ().hasCustomLayerOrder ())
133134
135+ def testNonSpatialLayer (self ):
136+ """ test that non spatial layers are not passed to canvas """
137+
138+ prj = QgsProject .instance ()
139+ prj .clear ()
140+ layer = QgsVectorLayer ("Point?field=fldtxt:string" ,
141+ "layer1" , "memory" )
142+ layer2 = QgsVectorLayer ("Point?field=fldtxt:string" ,
143+ "layer2" , "memory" )
144+ layer3 = QgsVectorLayer ("Point?field=fldtxt:string" ,
145+ "layer3" , "memory" )
146+ non_spatial = QgsVectorLayer ("None?field=fldtxt:string" ,
147+ "non_spatial" , "memory" )
148+
149+ prj .addMapLayers ([layer , layer2 , layer3 , non_spatial ])
150+
151+ canvas = QgsMapCanvas ()
152+ bridge = QgsLayerTreeMapCanvasBridge (prj .layerTreeRoot (), canvas )
153+
154+ #custom layer order
155+ prj .layerTreeRoot ().setHasCustomLayerOrder (True )
156+ prj .layerTreeRoot ().setCustomLayerOrder ([layer3 , layer , layer2 ])
157+ app .processEvents ()
158+ self .assertEqual (canvas .mapSettings ().layers (), [layer3 , layer , layer2 ])
159+
160+ # with non-spatial (should not be possible through ui, but is through api)
161+ prj .layerTreeRoot ().setCustomLayerOrder ([layer3 , layer , layer2 , non_spatial ])
162+ app .processEvents ()
163+ #self.assertEqual(canvas.mapSettings().layers(),[layer3,layer,layer2])
164+
165+ # no custom layer order
166+ prj .layerTreeRoot ().setHasCustomLayerOrder (False )
167+ app .processEvents ()
168+ self .assertEqual (canvas .mapSettings ().layers (), [layer , layer2 , layer3 ])
169+
134170
135171if __name__ == '__main__' :
136172 unittest .main ()
0 commit comments