@@ -20,7 +20,9 @@ import AccountsService 0.1
20import MeeGo.QOfono 0.2
20import MeeGo.QOfono 0.2
21import QMenuModel 0.1
21import QMenuModel 0.1
22import Ubuntu.Components 1.3
22import Ubuntu.Components 1.3
23+import Ubuntu.Connectivity 1.0
23import Ubuntu.SystemSettings.SecurityPrivacy 1.0
24import Ubuntu.SystemSettings.SecurityPrivacy 1.0
25+import Ubuntu.SystemSettings.Update 1.0
24import Ubuntu.SystemSettings.TimeDate 1.1
26import Ubuntu.SystemSettings.TimeDate 1.1
25import Unity.Test 0.1 as UT
27import Unity.Test 0.1 as UT
26import Wizard 0.1
28import Wizard 0.1
@@ -86,34 +88,22 @@ Item {
86 signalName: "keymapsChanged"
88 signalName: "keymapsChanged"
89− function setup() {
91+ SignalSpy {
90− i18n.language = "en";
92+ id: updateDownloadedSpy
91− MockQOfono.setModems(["sim1"], [false], []);
93+ target: SystemImage
92− MockQOfono.available = true;
94+ signalName: "updateDownloaded"
93− MockQOfono.ready = true;
94− System.wizardEnabled = true;
96− updateSessionLanguageSpy.clear();
97− setSecuritySpy.clear();
98− activateLocationSpy.clear();
99− activateGPSSpy.clear();
100− timezoneSpy.clear();
101− kbdLayoutSpy.clear();
104− "location-detection-enabled": {
108− "gps-detection-enabled": {
115− Component.onCompleted: {
97+ SignalSpy {
116− setup();
98+ id: applyUpdateSpy
100+ signalName: "applyUpdate"
104+ id: skipUntilFinishedSpy
106+ signalName: "wouldHaveSetSkipUntilFinish"
119 UT.UnityTestCase {
109 UT.UnityTestCase {
@@ -123,6 +113,52 @@ Item {
124 property Item wizard: wizardLoader.status === Loader.Ready ? wizardLoader.item : null
114 property Item wizard: wizardLoader.status === Loader.Ready ? wizardLoader.item : null
117+ i18n.language = "en";
118+ MockQOfono.setModems(["sim1"], [false], []);
119+ MockQOfono.available = true;
120+ MockQOfono.ready = true;
122+ System.wizardEnabled = true;
123+ System.isUpdate = false;
125+ SystemImage.updateAvailable = false;
126+ SystemImage.checkingForUpdates = false;
128+ NetworkingStatus.status = NetworkingStatus.Offline;
130+ updateSessionLanguageSpy.clear();
131+ setSecuritySpy.clear();
132+ activateLocationSpy.clear();
133+ activateGPSSpy.clear();
134+ timezoneSpy.clear();
135+ kbdLayoutSpy.clear();
136+ updateDownloadedSpy.clear();
137+ applyUpdateSpy.clear();
138+ skipUntilFinishedSpy.clear();
140+ // reload our test subject to get it in a fresh state once again
141+ wizardLoader.active = true;
143+ tryCompare(wizardLoader, "status", Loader.Ready);
145+ var pages = findChild(wizard, "wizardPages")
146+ var security = findInvisibleChild(pages, "securityPrivacy");
147+ security.setSecurity("", "", UbuntuSecurityPrivacyPanel.Swipe);
148+ setSecuritySpy.target = security;
151+ "location-detection-enabled": {
155+ "gps-detection-enabled": {
126 function cleanup() {
162 function cleanup() {
127 wizardLoader.itemDestroyed = false;
163 wizardLoader.itemDestroyed = false;
@@ -137,18 +173,6 @@ Item {
137 // iteration to do its work. So to ensure the reload, we will wait until the
173 // iteration to do its work. So to ensure the reload, we will wait until the
138 // Shell instance gets destroyed.
174 // Shell instance gets destroyed.
139 tryCompare(wizardLoader, "itemDestroyed", true);
175 tryCompare(wizardLoader, "itemDestroyed", true);
141− // reload our test subject to get it in a fresh state once again
142− wizardLoader.active = true;
144− tryCompare(wizardLoader, "status", Loader.Ready);
146− var pages = findChild(wizard, "wizardPages");
147− var security = findInvisibleChild(pages, "securityPrivacy");
148− security.setSecurity("", "", UbuntuSecurityPrivacyPanel.Swipe);
149− setSecuritySpy.target = security;
154 function waitForPage(name) {
178 function waitForPage(name) {
@@ -166,13 +190,10 @@ Item {
166 return stack.currentPage;
190 return stack.currentPage;
169− function goToPage(name, skipSim, skipLocation) {
193+ function goToPage(name, skipSim) {
170 if (skipSim === undefined) {
194 if (skipSim === undefined) {
171 skipSim = false;
195 skipSim = false;
173− if (skipLocation === undefined) {
174− skipLocation = false;
177 var page = waitForPage("languagePage");
198 var page = waitForPage("languagePage");
178 if (name === page.objectName) return page;
199 if (name === page.objectName) return page;
@@ -192,12 +213,6 @@ Item {
192 if (name === page.objectName) return page;
213 if (name === page.objectName) return page;
193 tap(findChild(page, "forwardButton"));
214 tap(findChild(page, "forwardButton"));
195− if (!skipLocation) {
196− page = waitForPage("locationPage");
197− if (name === page.objectName) return page;
198− tap(findChild(page, "forwardButton"));
201 page = waitForPage("tzPage");
216 page = waitForPage("tzPage");
202 if (name === page.objectName) return page;
217 if (name === page.objectName) return page;
203 waitUntilTransitionsEnd(page);
218 waitUntilTransitionsEnd(page);
@@ -211,10 +226,23 @@ Item {
211 if (name === page.objectName) return page;
226 if (name === page.objectName) return page;
212 tap(findChild(page, "nameInput"));
227 tap(findChild(page, "nameInput"));
213 typeString("foobar");
228 typeString("foobar");
214− tap(findChild(page, "forwardButton"));
230+ if (name != "passwdPage") {
231+ // Skip the password prompt
232+ var pages = findChild(wizard, "wizardPages");
233+ var security = findInvisibleChild(pages, "securityPrivacy");
234+ security.setSecurity("", "", UbuntuSecurityPrivacyPanel.Passphrase);
235+ tap(findChild(page, "forwardButton"));
237+ tap(findChild(page, "forwardButton"));
216− page = waitForPage("passwdPage");
238+ page = waitForPage("passwdPage");
239+ if (name === page.objectName) return page;
240+ tap(findChild(page, "forwardButton"));
243+ page = waitForPage("systemUpdatePage");
217 if (name === page.objectName) return page;
244 if (name === page.objectName) return page;
245+ waitUntilTransitionsEnd(page);
218 tap(findChild(page, "forwardButton"));
246 tap(findChild(page, "forwardButton"));
220 page = waitForPage("finishedPage");
248 page = waitForPage("finishedPage");
@@ -323,8 +351,6 @@ Item {
323 enterPasscode("1111");
351 enterPasscode("1111");
325 // now finish up
353 // now finish up
326− page = waitForPage("systemUpdatePage");
327− tap(findChild(page, "forwardButton"));
328 page = waitForPage("finishedPage");
354 page = waitForPage("finishedPage");
329 waitUntilTransitionsEnd(page);
355 waitUntilTransitionsEnd(page);
330 tap(findChild(page, "finishButton"));
356 tap(findChild(page, "finishButton"));
@@ -363,8 +389,6 @@ Item {
363 tap(continueButton);
389 tap(continueButton);
365 // now finish up
391 // now finish up
366− page = waitForPage("systemUpdatePage");
367− tap(findChild(page, "forwardButton"));
368 page = waitForPage("finishedPage");
392 page = waitForPage("finishedPage");
369 waitUntilTransitionsEnd(page);
393 waitUntilTransitionsEnd(page);
370 tap(findChild(page, "finishButton"));
394 tap(findChild(page, "finishButton"));
@@ -381,8 +405,6 @@ Item {
382 // now finish up
406 // now finish up
383 tap(findChild(page, "forwardButton"));
407 tap(findChild(page, "forwardButton"));
384− page = waitForPage("systemUpdatePage");
385− tap(findChild(page, "forwardButton"));
386 page = waitForPage("finishedPage");
408 page = waitForPage("finishedPage");
387 waitUntilTransitionsEnd(page);
409 waitUntilTransitionsEnd(page);
388 tap(findChild(page, "finishButton"));
410 tap(findChild(page, "finishButton"));
@@ -390,42 +412,6 @@ Item {
390 tryCompare(setSecuritySpy, "count", 0); // not called for swipe method
412 tryCompare(setSecuritySpy, "count", 0); // not called for swipe method
393− function test_locationGpsOnly() {
394− var page = goToPage("locationPage");
395− var gpsCheck = findChild(page, "gpsCheckLabel");
396− var nopeCheck = findChild(page, "nopeCheckLabel");
398− var locationActionGroup = findInvisibleChild(page, "locationActionGroup");
399− activateLocationSpy.target = locationActionGroup.location;
400− activateGPSSpy.target = locationActionGroup.gps;
403− tryCompare(gpsCheck, "checked", true);
404− tryCompare(nopeCheck, "checked", false);
406− tap(findChild(page, "forwardButton"));
407− tryCompare(activateLocationSpy, "count", 1)
408− tryCompare(activateGPSSpy, "count", 1)
411− function test_locationNope() {
412− var page = goToPage("locationPage");
413− var gpsCheck = findChild(page, "gpsCheckLabel");
414− var nopeCheck = findChild(page, "nopeCheckLabel");
416− var locationActionGroup = findInvisibleChild(page, "locationActionGroup");
417− activateLocationSpy.target = locationActionGroup.location;
418− activateGPSSpy.target = locationActionGroup.gps;
421− tryCompare(gpsCheck, "checked", false);
422− tryCompare(nopeCheck, "checked", true);
424− tap(findChild(page, "forwardButton"));
425− tryCompare(activateLocationSpy, "count", 0);
426− tryCompare(activateGPSSpy, "count", 0);
429 function test_timezonePage() {
415 function test_timezonePage() {
430 var page = goToPage("tzPage");
416 var page = goToPage("tzPage");
431 verify(page);
417 verify(page);
@@ -452,6 +438,24 @@ Item {
452 compare(timezoneSpy.signalArguments[0][1], "Belfast");
438 compare(timezoneSpy.signalArguments[0][1], "Belfast");
441+ function test_systemUpdatePage() {
443+ compare(updateDownloadedSpy.count, 0);
444+ SystemImage.updateAvailable = true;
445+ SystemImage.targetBuildNumber = 42;
446+ SystemImage.updateDownloaded();
447+ compare(updateDownloadedSpy.count, 1);
449+ var page = goToPage("systemUpdatePage");
450+ var updateButton = findChild(page, "installButton");
452+ compare(skipUntilFinishedSpy.count, 0);
453+ compare(applyUpdateSpy.count, 0);
455+ compare(skipUntilFinishedSpy.count, 1);
456+ compare(applyUpdateSpy.count, 1);
455 function test_accountPage() {
459 function test_accountPage() {
456 var page = goToPage("accountPage");
460 var page = goToPage("accountPage");
457 var forwardButton = findChild(page, "forwardButton");
461 var forwardButton = findChild(page, "forwardButton");