Skip to content

Commit 7d65ee9

Browse files
MieWinstrupnyalldawson
authored andcommittedApr 5, 2018
Added tests for moving group to the top
1 parent 44df14d commit 7d65ee9

File tree

1 file changed

+87
-5
lines changed

1 file changed

+87
-5
lines changed
 

‎tests/src/python/test_qgslayertreeview.py

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@
1919
from qgis.core import (
2020
QgsLayerTreeModel,
2121
QgsProject,
22-
QgsVectorLayer
22+
QgsVectorLayer,
23+
QgsLayerTreeLayer,
24+
QgsLayerTree,
25+
)
26+
from qgis.gui import (
27+
QgsLayerTreeView,
28+
QgsLayerTreeViewDefaultActions,
2329
)
24-
from qgis.gui import (QgsLayerTreeView,
25-
QgsLayerTreeViewDefaultActions)
2630
from qgis.testing import start_app, unittest
2731
from utilities import (unitTestDataPath)
2832
from qgis.PyQt.QtCore import QStringListModel
@@ -46,9 +50,26 @@ def __init__(self, methodName):
4650
"layer2", "memory")
4751
self.layer3 = QgsVectorLayer("Point?field=fldtxt:string",
4852
"layer3", "memory")
53+
self.layer4 = QgsVectorLayer("Point?field=fldtxt:string",
54+
"layer4", "memory")
55+
self.layer5 = QgsVectorLayer("Point?field=fldtxt:string",
56+
"layer5", "memory")
4957
self.project.addMapLayers([self.layer, self.layer2, self.layer3])
5058
self.model = QgsLayerTreeModel(self.project.layerTreeRoot())
5159

60+
def nodeOrder(self, group):
61+
nodeorder = []
62+
layerTree = QgsLayerTree()
63+
for node in group:
64+
if QgsLayerTree.isGroup(node):
65+
groupname = node.name()
66+
nodeorder.append(groupname)
67+
for child in self.nodeOrder(node.children()):
68+
nodeorder.append(groupname + '-' + child)
69+
elif QgsLayerTree.isLayer(node):
70+
nodeorder.append(node.layer().name())
71+
return nodeorder
72+
5273
def testSetModel(self):
5374
view = QgsLayerTreeView()
5475

@@ -90,8 +111,8 @@ def testDefaultActions(self):
90111
show_in_overview.trigger()
91112
self.assertEqual(view.currentNode().customProperty('overview', 0), False)
92113

93-
def testMoveToTopAction(self):
94-
"""Test move to top action"""
114+
def testMoveToTopActionLayer(self):
115+
"""Test move to top action on layer"""
95116
view = QgsLayerTreeView()
96117
view.setModel(self.model)
97118
actions = QgsLayerTreeViewDefaultActions(view)
@@ -101,6 +122,67 @@ def testMoveToTopAction(self):
101122
movetotop.trigger()
102123
self.assertEqual(self.project.layerTreeRoot().layerOrder(), [self.layer3, self.layer, self.layer2])
103124

125+
def testMoveToTopActionGroup(self):
126+
"""Test move to top action on group"""
127+
view = QgsLayerTreeView()
128+
group = self.project.layerTreeRoot().addGroup("embeddedgroup")
129+
group.addLayer(self.layer4)
130+
group.addLayer(self.layer5)
131+
groupname = group.name()
132+
view.setModel(self.model)
133+
actions = QgsLayerTreeViewDefaultActions(view)
134+
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
135+
self.layer.name(),
136+
self.layer2.name(),
137+
self.layer3.name(),
138+
groupname,
139+
groupname + '-' + self.layer4.name(),
140+
groupname + '-' + self.layer5.name(),
141+
])
142+
143+
nodeLayerIndex = self.model.node2index(group)
144+
view.setCurrentIndex(nodeLayerIndex)
145+
movetotop = actions.actionMoveToTop()
146+
movetotop.trigger()
147+
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
148+
groupname,
149+
groupname + '-' + self.layer4.name(),
150+
groupname + '-' + self.layer5.name(),
151+
self.layer.name(),
152+
self.layer2.name(),
153+
self.layer3.name(),
154+
])
155+
156+
def testMoveToTopActionEmbeddedGroup(self):
157+
"""Test move to top action on embeddedgroup layer"""
158+
view = QgsLayerTreeView()
159+
group = self.project.layerTreeRoot().addGroup("embeddedgroup")
160+
group.addLayer(self.layer4)
161+
group.addLayer(self.layer5)
162+
groupname = group.name()
163+
view.setModel(self.model)
164+
actions = QgsLayerTreeViewDefaultActions(view)
165+
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
166+
self.layer.name(),
167+
self.layer2.name(),
168+
self.layer3.name(),
169+
groupname,
170+
groupname + '-' + self.layer4.name(),
171+
groupname + '-' + self.layer5.name(),
172+
])
173+
174+
view.setCurrentLayer(self.layer5)
175+
movetotop = actions.actionMoveToTop()
176+
movetotop.trigger()
177+
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
178+
self.layer.name(),
179+
self.layer2.name(),
180+
self.layer3.name(),
181+
groupname,
182+
groupname + '-' + self.layer5.name(),
183+
groupname + '-' + self.layer4.name(),
184+
])
185+
104186

105187
if __name__ == '__main__':
106188
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.