on xenial help sign in
Add tests
commit46d903270835d93fc9d20b6e01708041faf41c9f authorAlbert Astals Cid <albert.astals@canonical.com> dateWed 15 Mar 2017, 14:51 (10 years ago) parentef36c8c
7 files changed+120−14
qml/ApplicationMenus/MenuBar.qml+3−2 qml/ApplicationMenus/MenuPopup.qml+3−2 tests/mocks/QMenuModel/unitymenumodel.cpp+2−1 tests/mocks/QMenuModel/unitymenumodel.h+1 tests/qmltests/ApplicationMenus/tst_MenuBar.qml+43 tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+34−9 tests/qmltests/Panel/tst_Panel.qml+34
qml/ApplicationMenus/MenuBar.qml+3−2
@@ -131,8 +131,8 @@ Item {
131131 opacity: shouldDisplay ? 1 : 0
132132
133133 function show() {
134− root.unityMenuModel.aboutToShow(visualItem.__ownIndex);
135134 if (!__popup) {
135+ root.unityMenuModel.aboutToShow(visualItem.__ownIndex);
136136 __popup = menuComponent.createObject(root,
137137 {
138138 objectName: visualItem.objectName + "-menu",
@@ -143,7 +143,8 @@ Item {
143143 __popup.reset();
144144 __popup.childActivated.connect(dismiss);
145145 // force the current item to be the newly popped up menu
146− } else {
146+ } else if (!__popup.visible) {
147+ root.unityMenuModel.aboutToShow(visualItem.__ownIndex);
147148 __popup.show();
148149 }
149150 d.currentItem = visualItem;
qml/ApplicationMenus/MenuPopup.qml+3−2
@@ -301,8 +301,8 @@ UbuntuShape {
301301 d.currentItem = parent;
302302
303303 if (hasSubmenu) {
304− root.unityMenuModel.aboutToShow(__ownIndex);
305304 if (!popup) {
305+ root.unityMenuModel.aboutToShow(__ownIndex);
306306 var model = root.unityMenuModel.submenu(__ownIndex);
307307 popup = submenuComponent.createObject(focusScope, {
308308 objectName: parent.objectName + "-",
@@ -324,7 +324,8 @@ UbuntuShape {
324324 popup = null;
325325 root.childActivated();
326326 });
327− } else if (popup) {
327+ } else if (!popup.visible) {
328+ root.unityMenuModel.aboutToShow(__ownIndex);
328329 popup.visible = true;
329330 }
330331 } else {
tests/mocks/QMenuModel/unitymenumodel.cpp+2−1
@@ -273,8 +273,9 @@ void UnityMenuModel::activate(int row, const QVariant&)
273273 Q_EMIT activated(rd[roleNames()[ActionRole]].toString());
274274}
275275
276−void UnityMenuModel::aboutToShow(int)
276+void UnityMenuModel::aboutToShow(int index)
277277{
278+ Q_EMIT aboutToShowCalled(index);
278279}
279280
280281void UnityMenuModel::changeState(int, const QVariant&)
tests/mocks/QMenuModel/unitymenumodel.h+1
@@ -88,6 +88,7 @@ Q_SIGNALS:
8888
8989 // Internal mock usage
9090 void modelDataChanged();
91+ void aboutToShowCalled(int index);
9192
9293 void activated(const QString& action);
9394
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+43
@@ -76,6 +76,12 @@ Item {
7676 signalName: "activated"
7777 }
7878
79+ SignalSpy {
80+ id: aboutToShowCalledSpy
81+ target: menuBackend
82+ signalName: "aboutToShowCalled"
83+ }
84+
7985 UnityTestCase {
8086 id: testCase
8187 name: "MenuBar"
@@ -115,6 +121,43 @@ Item {
115121 compare(menuItem0.popupVisible, true, "Popup should be visible");
116122 }
117123
124+ function test_aboutToShow() {
125+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
126+ wait(50) // wait for row to build
127+ var priv = findInvisibleChild(menuBar, "d");
128+
129+ var menuItem0 = findChild(menuBar, "menuBar-item0");
130+ var menuItem1 = findChild(menuBar, "menuBar-item1");
131+
132+ aboutToShowCalledSpy.clear();
133+ menuItem0.show();
134+ compare(aboutToShowCalledSpy.count, 1);
135+
136+ menuItem0.show();
137+ // It's already shown so nothing happens
138+ compare(aboutToShowCalledSpy.count, 1);
139+
140+ menuItem0.hide();
141+ menuItem0.show();
142+ compare(aboutToShowCalledSpy.count, 2);
143+
144+ menuItem0.dismiss();
145+ menuItem0.show();
146+ compare(aboutToShowCalledSpy.count, 3);
147+
148+ menuItem1.show();
149+ compare(aboutToShowCalledSpy.count, 4);
150+
151+ menuItem0.show();
152+ compare(aboutToShowCalledSpy.count, 5);
153+
154+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
155+ compare(aboutToShowCalledSpy.signalArguments[1][0], 0);
156+ compare(aboutToShowCalledSpy.signalArguments[2][0], 0);
157+ compare(aboutToShowCalledSpy.signalArguments[3][0], 1);
158+ compare(aboutToShowCalledSpy.signalArguments[4][0], 0);
159+ }
160+
118161 function test_keyboardNavigation_RightKeySelectsNextMenuItem(data) {
119162 menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
120163 var priv = findInvisibleChild(menuBar, "d");
tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+34−9
@@ -59,18 +59,13 @@ Item {
5959 }}
6060 ]
6161 }
62−
63− Binding {
64− target: activatedSpy
65− property: "target"
66− value: unityMenuModel
67− }
6862 }
6963 }
7064
7165 SignalSpy {
72− id: activatedSpy
73− signalName: "activated"
66+ id: aboutToShowCalledSpy
67+ target: loader.item ? loader.item.unityMenuModel : undefined
68+ signalName: "aboutToShowCalled"
7469 }
7570
7671 UnityTestCase {
@@ -88,7 +83,6 @@ Item {
8883 function cleanup() {
8984 menu.reset();
9085 wait(100); // let the page dismiss
91− activatedSpy.clear();
9286
9387 loader.active = false;
9488 tryCompare(loader, "item", null);
@@ -194,6 +188,37 @@ Item {
194188 compare(priv.currentItem, item0, "CurrentItem should have moved to item 2");
195189 }
196190
191+ function test_aboutToShow() {
192+ menu.unityMenuModel.modelData = appMenuData.generateTestData(3,3,1,0,"menu",false);
193+
194+ var item0 = findChild(menu, "menu-item0");
195+ var item1 = findChild(menu, "menu-item1");
196+ var item2 = findChild(menu, "menu-item2");
197+
198+ aboutToShowCalledSpy.clear();
199+
200+ mouseMove(item0, item0.width/2, item0.height/2);
201+ tryCompare(aboutToShowCalledSpy, "count", 1);
202+
203+ mouseMove(item1, item0.width/2, item0.height/2);
204+ tryCompare(aboutToShowCalledSpy, "count", 2);
205+
206+ mouseMove(item2, item0.width/2, item0.height/2);
207+ tryCompare(aboutToShowCalledSpy, "count", 3);
208+
209+ mouseMove(item0, item0.width/2, item0.height/2);
210+ tryCompare(aboutToShowCalledSpy, "count", 4);
211+
212+ item0.item.trigger();
213+ // it's already visible
214+ tryCompare(aboutToShowCalledSpy, "count", 4);
215+
216+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
217+ compare(aboutToShowCalledSpy.signalArguments[1][0], 1);
218+ compare(aboutToShowCalledSpy.signalArguments[2][0], 2);
219+ compare(aboutToShowCalledSpy.signalArguments[3][0], 0);
220+ }
221+
197222 function test_keyboardNavigation_RightKeyEntersSubMenu() {
198223 menu.unityMenuModel.modelData = appMenuData.generateTestData(3,3,1,0,"menu",false);
199224
tests/qmltests/Panel/tst_Panel.qml+34
@@ -57,6 +57,11 @@ PanelTest {
5757 color: "darkgrey"
5858 }
5959
60+ SignalSpy {
61+ id: aboutToShowCalledSpy
62+ signalName: "aboutToShowCalled"
63+ }
64+
6065 RowLayout {
6166 anchors.fill: parent
6267 anchors.margins: units.gu(1)
@@ -838,5 +843,34 @@ PanelTest {
838843 keyClick(Qt.Key_Escape);
839844 tryCompare(panel.indicators, "fullyClosed", true);
840845 }
846+
847+ function test_aboutToShowMenu() {
848+ waitForRendering(panel);
849+
850+ aboutToShowCalledSpy.target = panel.applicationMenus.model
851+ aboutToShowCalledSpy.clear();
852+
853+ var indicatorsBar = findChild(panel.applicationMenus, "indicatorsBar");
854+
855+ PanelState.title = "Fake Title"
856+ pullDownApplicationsMenu();
857+ compare(aboutToShowCalledSpy.count, 1);
858+
859+ keyClick(Qt.Key_Right);
860+ tryCompare(indicatorsBar, "currentItemIndex", 1);
861+ compare(aboutToShowCalledSpy.count, 2);
862+
863+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
864+ compare(aboutToShowCalledSpy.signalArguments[1][0], 1);
865+
866+ keyClick(Qt.Key_Tab);
867+ keyClick(Qt.Key_Tab);
868+
869+ aboutToShowCalledSpy.target = panel.applicationMenus.model.submenu(1);
870+ aboutToShowCalledSpy.clear();
871+
872+ keyClick(Qt.Key_Enter);
873+ compare(aboutToShowCalledSpy.count, 1);
874+ }
841875 }
842876}