on xenial help sign in
More tests
8dc759aMichael Terry
qml/Greeter/Greeter.qml+1−1
@@ -190,7 +190,7 @@ Showable {
190 root.lockedApp = "";
190 root.lockedApp = "";
191 root.forceActiveFocus();
191 root.forceActiveFocus();
192 d.selectUser(d.currentIndex);
192 d.selectUser(d.currentIndex);
193− LightDM.InfoGraphic.readyForDataChange();
193+ LightDM.Infographic.readyForDataChange();
194 }
194 }
195
195
196 Connections {
196 Connections {
qml/Greeter/NarrowView.qml−1
@@ -15,7 +15,6 @@
15 */
15 */
16
16
17import QtQuick 2.3
17import QtQuick 2.3
18−import AccountsService 0.1
19import Ubuntu.Components 1.1
18import Ubuntu.Components 1.1
20import "../Components"
19import "../Components"
21
20
tests/qmltests/Greeter/tst_NarrowView.qml+102−7
@@ -234,6 +234,12 @@ Item {
234 }
234 }
235 }
235 }
236
236
237+ Binding {
238+ target: LightDM.Infographic
239+ property: "username"
240+ value: "single"
241+ }
242+
237 SignalSpy {
243 SignalSpy {
238 id: selectedSpy
244 id: selectedSpy
239 target: loader.item
245 target: loader.item
@@ -258,6 +264,12 @@ Item {
258 signalName: "emergencyCall"
264 signalName: "emergencyCall"
259 }
265 }
260
266
267+ SignalSpy {
268+ id: infographicDataChangedSpy
269+ target: LightDM.Infographic
270+ signalName: "dataChanged"
271+ }
272+
261 UT.UnityTestCase {
273 UT.UnityTestCase {
262 name: "WideView"
274 name: "WideView"
263 when: windowShown
275 when: windowShown
@@ -266,10 +278,12 @@ Item {
266
278
267 function init() {
279 function init() {
268 view.currentIndex = 0; // break binding with text field
280 view.currentIndex = 0; // break binding with text field
281+
269 selectedSpy.clear();
282 selectedSpy.clear();
270 respondedSpy.clear();
283 respondedSpy.clear();
271 teaseSpy.clear();
284 teaseSpy.clear();
272 emergencySpy.clear();
285 emergencySpy.clear();
286+ infographicDataChangedSpy.clear();
273 }
287 }
274
288
275 function cleanup() {
289 function cleanup() {
@@ -283,10 +297,18 @@ Item {
283 removeTimeConstraintsFromDirectionalDragAreas(loader.item);
297 removeTimeConstraintsFromDirectionalDragAreas(loader.item);
284 }
298 }
285
299
286− function swipeAwayCover() {
300+ function swipeAwayCover(toTheRight) {
301+ if (toTheRight === undefined) {
302+ toTheRight = false;
303+ }
304+
287 tryCompare(view, "fullyShown", true);
305 tryCompare(view, "fullyShown", true);
288 var touchY = view.height / 2;
306 var touchY = view.height / 2;
307+ if (toTheRight) {
308+ touchFlick(view, 0, touchY, view.width, touchY);
309+ } else {
289− touchFlick(view, view.width, touchY, 0, touchY);
310+ touchFlick(view, view.width, touchY, 0, touchY);
311+ }
290 var coverPage = findChild(view, "coverPage");
312 var coverPage = findChild(view, "coverPage");
291 tryCompare(coverPage, "showProgress", 0);
313 tryCompare(coverPage, "showProgress", 0);
292 waitForRendering(view);
314 waitForRendering(view);
@@ -300,9 +322,18 @@ Item {
300 }
322 }
301 }
323 }
302
324
325+ function test_tease_data() {
326+ return [
327+ {tag: "left", x: 0, offset: 0, count: 1},
328+ {tag: "leftWithOffsetPass", x: 10, offset: 10, count: 1},
329+ {tag: "leftWithOffsetFail", x: 9, offset: 10, count: 0},
330+ {tag: "right", x: view.width, offset: 0, count: 1}
331+ ]
332+ }
303− function test_tease() {
333+ function test_tease(data) {
334+ view.dragHandleLeftMargin = data.offset;
304− tap(view, 1, 1);
335+ tap(view, data.x, 0);
305− compare(teaseSpy.count, 1);
336+ compare(teaseSpy.count, data.count);
306 }
337 }
307
338
308 function test_respondedWithPin() {
339 function test_respondedWithPin() {
@@ -323,8 +354,16 @@ Item {
323 compare(respondedSpy.signalArguments[0][0], "test");
354 compare(respondedSpy.signalArguments[0][0], "test");
324 }
355 }
325
356
357+ function test_respondedWithSwipe_data() {
358+ return [
359+ {tag: "left", toTheRight: false, hiddenX: -view.width},
360+ {tag: "right", toTheRight: true, hiddenX: view.width},
361+ ];
362+ }
326− function test_respondedWithSwipe() {
363+ function test_respondedWithSwipe(data) {
327− swipeAwayCover();
364+ swipeAwayCover(data.toTheRight);
365+ var coverPage = findChild(view, "coverPage");
366+ compare(coverPage.x, data.hiddenX);
328 compare(respondedSpy.count, 1);
367 compare(respondedSpy.count, 1);
329 compare(respondedSpy.signalArguments[0][0], "");
368 compare(respondedSpy.signalArguments[0][0], "");
330 }
369 }
@@ -356,5 +395,61 @@ Item {
356 view.locked = false;
395 view.locked = false;
357 tryCompare(view, "required", false);
396 tryCompare(view, "required", false);
358 }
397 }
398+
399+ /*
400+ Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1388359
401+ "User metrics can no longer be changed by double tap"
402+ */
403+ function test_doubleTapSwitchesToNextInfographic() {
404+ var infographicPrivate = findInvisibleChild(view, "infographicPrivate");
405+ verify(infographicPrivate);
406+
407+ // wait for the UI to settle down before double tapping it
408+ tryCompare(infographicPrivate, "animating", false);
409+
410+ var dataCircle = findChild(view, "dataCircle");
411+ verify(dataCircle);
412+
413+ tap(dataCircle);
414+ wait(1);
415+ tap(dataCircle);
416+
417+ tryCompare(infographicDataChangedSpy, "count", 1);
418+ }
419+
420+ function test_movesBackIntoPlaceWhenNotDraggedFarEnough() {
421+ var coverPage = findChild(view, "coverPage");
422+
423+ var dragEvaluator = findInvisibleChild(coverPage, "edgeDragEvaluator");
424+ verify(dragEvaluator);
425+
426+ // Make it easier to get a rejection/rollback. Otherwise would have to inject
427+ // a fake timer into dragEvaluator.
428+ // Afterall, we are testing if the CoverPage indeed moves back on a
429+ // rollback decision, not the drag evaluation itself.
430+ dragEvaluator.minDragDistance = dragEvaluator.maxDragDistance / 2;
431+
432+ // it starts as fully shown
433+ compare(coverPage.x, 0);
434+
435+ // then we drag it a bit
436+ var startX = coverPage.width - 1;
437+ var touchY = coverPage.height / 2;
438+ var dragXDelta = -(dragEvaluator.minDragDistance * 0.3);
439+ touchFlick(coverPage,
440+ startX , touchY, // start pos
441+ startX + dragXDelta, touchY, // end pos
442+ true /* beginTouch */, false /* endTouch */);
443+
444+ // which should make it move a bit
445+ tryCompareFunction(function() {return coverPage.x < 0;}, true);
446+
447+ // then we release it
448+ touchRelease(coverPage, startX + dragXDelta, touchY);
449+
450+ // which should make it move back into its original position as it didn't move
451+ // far enough to have it hidden
452+ tryCompare(coverPage, "x", 0);
453+ }
359 }
454 }
360}
455}
tests/qmltests/Greeter/tst_SingleGreeter.qml−77
@@ -72,12 +72,6 @@ Rectangle {
72 signalName: "tapped"
72 signalName: "tapped"
73 }
73 }
74
74
75− SignalSpy {
76− id: infographicDataChangedSpy
77− target: LightDM.Infographic
78− signalName: "dataChanged"
79− }
80−
81 UT.UnityTestCase {
75 UT.UnityTestCase {
82 name: "SingleGreeter"
76 name: "SingleGreeter"
83 when: windowShown
77 when: windowShown
@@ -105,20 +99,6 @@ Rectangle {
105 compare(greeter.narrowMode, true)
99 compare(greeter.narrowMode, true)
106 }
100 }
107
101
108− function test_teasingArea_data() {
109− return [
110− {tag: "left", posX: units.gu(2), leftPressed: true, rightPressed: false},
111− {tag: "right", posX: greeter.width - units.gu(2), leftPressed: false, rightPressed: true}
112− ]
113− }
114−
115− function test_teasingArea(data) {
116− tappedSpy.clear()
117− tap(greeter, data.posX, greeter.height - units.gu(1))
118− tappedSpy.wait()
119− tryCompare(tappedSpy, "count", 1)
120− }
121−
122 function test_statsWelcomeScreen() {
102 function test_statsWelcomeScreen() {
123 // Test logic in greeter that turns statsWelcomeScreen setting into infographic changes
103 // Test logic in greeter that turns statsWelcomeScreen setting into infographic changes
124 compare(AccountsService.statsWelcomeScreen, true)
104 compare(AccountsService.statsWelcomeScreen, true)
@@ -135,63 +115,6 @@ Rectangle {
135 tryCompare(selectedSpy, "count", 1);
115 tryCompare(selectedSpy, "count", 1);
136 }
116 }
137
117
138− /*
139− Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1388359
140− "User metrics can no longer be changed by double tap"
141− */
142− function test_doubleTapSwitchesToNextInfographic() {
143− infographicDataChangedSpy.clear();
144−
145− var infographicPrivate = findInvisibleChild(greeter, "infographicPrivate");
146− verify(infographicPrivate);
147−
148− // wait for the UI to settle down before double tapping it
149− tryCompare(infographicPrivate, "animating", false);
150−
151− var dataCircle = findChild(greeter, "dataCircle");
152− verify(dataCircle);
153−
154− tap(dataCircle);
155− wait(1);
156− tap(dataCircle);
157−
158− tryCompare(infographicDataChangedSpy, "count", 1);
159− }
160−
161− function test_movesBackIntoPlaceWhenNotDraggedFarEnough() {
162−
163− var dragEvaluator = findInvisibleChild(greeter, "edgeDragEvaluator");
164− verify(dragEvaluator);
165−
166− // Make it easier to get a rejection/rollback. Otherwise would have to inject
167− // a fake timer into dragEvaluator.
168− // Afterall, we are testing if the Greeter indeed moves back on a
169− // rollback decision, not the drag evaluation itself.
170− dragEvaluator.minDragDistance = dragEvaluator.maxDragDistance / 2;
171−
172− // it starts as fully shown
173− compare(greeter.x, 0);
174−
175− // then we drag it a bit
176− var startX = greeter.width - 1;
177− var touchY = greeter.height / 2;
178− var dragXDelta = -(dragEvaluator.minDragDistance * 0.3);
179− touchFlick(greeter,
180− startX , touchY, // start pos
181− startX + dragXDelta, touchY, // end pos
182− true /* beginTouch */, false /* endTouch */);
183−
184− // which should make it move a bit
185− tryCompareFunction(function(){return greeter.x < 0;}, true);
186−
187− // then we release it
188− touchRelease(greeter, startX + dragXDelta, touchY);
189−
190− // which should make it move back into its original position as it didn't move
191− // far enough to have it hidden
192− tryCompare(greeter, "x", 0);
193− }
194−
195 function test_dragToHide_data() {
118 function test_dragToHide_data() {
196 return [
119 return [
197 {tag: "left", startX: greeter.width * 0.95, endX: greeter.width * 0.1, hiddenX: -greeter.width},
120 {tag: "left", startX: greeter.width * 0.95, endX: greeter.width * 0.1, hiddenX: -greeter.width},