on xenial help sign in
added drag'n'drop tests
commit890f0e076db90a66fda7baf6c185a4c69267067e authorMichael Zanetti <michael.zanetti@canonical.com> dateFri 16 Aug 2013, 13:39 (13 years ago) parentffcb753
2 files changed+62
Launcher/LauncherPanel.qml+2 tests/qmltests/Launcher/tst_Launcher.qml+60
Launcher/LauncherPanel.qml+2
@@ -133,6 +133,7 @@ Item {
133133 property bool dragging: false
134134
135135 ThinDivider {
136+ objectName: "dropIndicator"
136137 anchors.centerIn: parent
137138 width: parent.width + mainColumn.anchors.leftMargin + mainColumn.anchors.rightMargin
138139 opacity: parent.dragging ? 1 : 0
@@ -391,6 +392,7 @@ Item {
391392
392393 LauncherDelegate {
393394 id: fakeDragItem
395+ objectName: "fakeDragItem"
394396 visible: dndArea.draggedIndex >= 0
395397 itemWidth: launcherListView.itemWidth
396398 itemHeight: launcherListView.itemHeight
tests/qmltests/Launcher/tst_Launcher.qml+60
@@ -19,6 +19,7 @@ import QtTest 1.0
1919import Unity.Test 0.1 as UT
2020import ".."
2121import "../../../Launcher"
22+import Unity.Launcher 0.1
2223
2324/* Nothing is shown at first. If you drag from left edge you will bring up the
2425 launcher. */
@@ -247,4 +248,63 @@ Item {
247248 }
248249 */
249250 }
251+
252+ UT.UnityTestCase {
253+ id: dndTestCase
254+ name: "Drag and Drop"
255+ when: windowShown && initTestCase.completed
256+
257+ function test_dragndrop_data() {
258+ return [
259+ {tag: "startDrag", fullDrag: false},
260+ {tag: "fullDrag", fullDrag: true},
261+ ];
262+ }
263+
264+ function test_dragndrop(data) {
265+ revealer.dragLauncherIntoView();
266+ var draggedItem = findChild(launcher, "launcherDelegate5")
267+ var item0 = findChild(launcher, "launcherDelegate0")
268+ var fakeDragItem = findChild(launcher, "fakeDragItem")
269+ var initialItemHeight = draggedItem.height
270+ var item5Name = LauncherModel.get(5).iconName
271+ var item4Name = LauncherModel.get(4).iconName
272+
273+ // Initial state
274+ compare(draggedItem.itemOpacity, 1, "Item's opacity is not 1 at beginning")
275+ compare(fakeDragItem.itemOpacity, 0.8, "FakeDragItem isn't invisible at the beginning")
276+ tryCompare(findChild(draggedItem, "dropIndicator"), "opacity", 0)
277+
278+ // Doing longpress
279+ mousePress(draggedItem, draggedItem.width / 2, draggedItem.height / 2)
280+ // DraggedItem needs to hide and fakeDragItem become visible
281+ tryCompare(draggedItem, "itemOpacity", 0)
282+ tryCompare(fakeDragItem, "itemOpacity", 0.8)
283+
284+ // Dragging a bit (> 1.5 gu)
285+ mouseMove(draggedItem, -units.gu(2), draggedItem.height / 2)
286+ // Other items need to expand and become 0.6 opaque
287+ tryCompare(item0, "angle", 0)
288+ tryCompare(item0, "itemOpacity", 0.6)
289+
290+ if (data.fullDrag) {
291+ // Dragging a bit more
292+ mouseMove(draggedItem, -units.gu(15), draggedItem.height / 2, 100)
293+ tryCompare(findChild(draggedItem, "dropIndicator"), "opacity", 1)
294+ tryCompare(draggedItem, "height", units.gu(1))
295+
296+ // Dragging downwards. Item needs to move in the model
297+ mouseMove(draggedItem, -units.gu(15), -initialItemHeight)
298+ waitForRendering(draggedItem)
299+ compare(LauncherModel.get(5).iconName, item4Name)
300+ compare(LauncherModel.get(5).iconName, item5Name)
301+ }
302+
303+ // Releasing and checking if initial values are restored
304+ mouseRelease(draggedItem)
305+ tryCompare(findChild(draggedItem, "dropIndicator"), "opacity", 0)
306+ tryCompare(draggedItem, "itemOpacity", 1)
307+ tryCompare(fakeDragItem, "itemOpacity", 0.8)
308+ }
309+ }
250310}