@@ -16,42 +16,52 @@
17import QtQuick 2.4
17import QtQuick 2.4
18import QtTest 1.0
18import QtTest 1.0
19+import Ubuntu.Components 1.3
19import Unity.Test 0.1 as UT
20import Unity.Test 0.1 as UT
20−import Unity.Indicators 0.1 as Indicators
21+import QMenuModel 0.1
21import Ubuntu.Settings.Menus 0.1 as Menus
22import Ubuntu.Settings.Menus 0.1 as Menus
22import "../../../qml/Panel"
23import "../../../qml/Panel"
24+import "../../../qml/Panel/Indicators"
25 id: testView
27 id: testView
26 width: units.gu(40)
28 width: units.gu(40)
27 height: units.gu(70)
29 height: units.gu(70)
29− IndicatorPage {
31+ UnityMenuModel {
33+ modelData: fullMenuData
31 anchors.fill: parent
38 anchors.fill: parent
33− identifier: "test-indicator"
40+ menuModel: unityMenuModel
34− busName: "com.caninical.indicator.test"
41+ submenuIndex: 0
35− actionsObjectPath: "/com/canonical/indicator/test"
42+
36− menuObjectPath: "/com/canonical/indicator/test"
43+ factory: factoryComponent
50+ function load(model) {
51+ return standardMenuComponent;
55+ id: standardMenuComponent
38− factory {
57+ Menus.StandardMenu {
39− _map: {
58+ signal menuSelected
40− "default": {
59+ signal menuDeselected
41− "com.canonical.indicator.test" : testMenu
51− signal menuDeselected
55 property var fullMenuData: [{
65 property var fullMenuData: [{
56 "rowData": { // 1
66 "rowData": { // 1
57 "label": "root",
67 "label": "root",
@@ -126,43 +136,43 @@ Item {
126 "submenu": []
136 "submenu": []
127 }]; // end row 1
137 }]; // end row 1
129− function initializeMenuData(data) {
130− Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicator/test",
134 UT.UnityTestCase {
139 UT.UnityTestCase {
135 name: "IndicatorPage"
140 name: "IndicatorPage"
137 function init() {
142 function init() {
138− initializeMenuData([]);
143+ page.submenuIndex = 0;
144+ unityMenuModel.modelData = [];
145+ tryCompareFunction(function() { return page.currentPage == null }, true);
141− function test_reloadData() {
148+ function test_loadData() {
142− var mainMenu = findChild(page, "mainMenu");
149+ unityMenuModel.modelData = fullMenuData;
151+ tryCompareFunction(function() { return page.currentPage != null }, true);
152+ var listView = findChild(page.currentPage, "listView", 50);
144− tryCompare(mainMenu, "count", 0);
154+ tryCompare(listView, "count", 3);
146− initializeMenuData(fullMenuData);
156+ unityMenuModel.modelData = [];
147− tryCompare(mainMenu, "count", 3);
157+ tryCompareFunction(function() { return page.currentPage == null }, true);
149− initializeMenuData([]);
150− tryCompare(mainMenu, "count", 0);
153− function test_traverse_rootMenuType_data() {
160+ function test_traverse_submenuIndex_data() {
154− return [
161+ return [,
155− { tag: "Incorrect", rootMenuType: "com.canonical.indicator", expectedCount: 0},
156− { tag: "Correct", rootMenuType: "com.canonical.indicator.root", expectedCount: 3},
162+ { tag: "Correct", submenuIndex: 0, expectedCount: 3},
163+ { tag: "Incorrect", submenuIndex: 1, expectedCount: 0}
160− function test_traverse_rootMenuType(data) {
167+ function test_traverse_submenuIndex(data) {
161− page.rootMenuType = data.rootMenuType;
168+ page.submenuIndex = data.submenuIndex;
162− initializeMenuData(fullMenuData);
169+ unityMenuModel.modelData = fullMenuData;
171+ tryCompareFunction(function() { return page.currentPage != null }, data.expectedCount > 0);
172+ if (data.expectedCount > 0) {
164− var mainMenu = findChild(page, "mainMenu");
173+ var listView = findChild(page.currentPage, "listView", 50);
165− tryCompare(mainMenu, "count", data.expectedCount);
174+ tryCompare(listView, "count", data.expectedCount);
168 function test_remove_selected_item_data() {
178 function test_remove_selected_item_data() {
@@ -173,20 +183,22 @@ Item {
175 function test_remove_selected_item(data) {
185 function test_remove_selected_item(data) {
186+ unityMenuModel.modelData = fullMenuData;
176− var mainMenu = findChild(page, "mainMenu");
187+ var listView = findChild(page.currentPage, "listView", 50);
177− initializeMenuData(fullMenuData);
179 var menuId = "menu"+data.remove
189 var menuId = "menu"+data.remove
180− var menu = findChild(page, menuId);
190+ var menu = findChild(listView, menuId);
182 menu.menuSelected();
193 menu.menuSelected();
183− compare(mainMenu.currentIndex, data.remove, "Incorrect index selected");
194+ compare(listView.currentIndex, data.remove, "Incorrect index selected");
184− mainMenu.model.removeRow(data.remove);
195+ listView.model.removeRow(data.remove);
186− compare(mainMenu.currentIndex, -1, "Current index should be reset after current item removal");
197+ compare(listView.currentIndex, -1, "Current index should be reset after current item removal");
188 // now make sure selecting a new menu works.
199 // now make sure selecting a new menu works.
189 var menu1 = findChild(page, "menu1");
200 var menu1 = findChild(page, "menu1");
190 menu1.menuSelected();
202 menu1.menuSelected();
191 compare(menu1.selected, true, "Item not selected");
203 compare(menu1.selected, true, "Item not selected");