Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1785)

Side by Side Diff: chrome/test/data/webui/settings/about_page_tests.js

Issue 1997453006: MD Settings: About page, updating buttons based on current update status. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@about_page_main3
Patch Set: @private Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('settings_about_page', function() { 5 cr.define('settings_about_page', function() {
6 /** 6 /**
7 * @constructor 7 * @constructor
8 * @implements {settings.AboutPageBrowserProxy} 8 * @implements {settings.AboutPageBrowserProxy}
9 * @extends {settings.TestBrowserProxy} 9 * @extends {settings.TestBrowserProxy}
10 */ 10 */
11 var TestAboutPageBrowserProxy = function() { 11 var TestAboutPageBrowserProxy = function() {
12 settings.TestBrowserProxy.call(this, [ 12 settings.TestBrowserProxy.call(this, [
13 'pageReady', 13 'pageReady',
14 'refreshUpdateStatus', 14 'refreshUpdateStatus',
15 'openHelpPage', 15 'openHelpPage',
16 'openFeedbackDialog', 16 'openFeedbackDialog',
17 'getCurrentChannel', 17 'getCurrentChannel',
18 'getTargetChannel', 18 'getTargetChannel',
19 'getVersionInfo', 19 'getVersionInfo',
20 ]); 20 ]);
21 21
22 /** @type {!VersionInfo} */ 22 /** @type {!VersionInfo} */
23 this.versionInfo_ = { 23 this.versionInfo_ = {
24 arcVersion: '', 24 arcVersion: '',
25 osFirmware: '', 25 osFirmware: '',
26 osVersion: '', 26 osVersion: '',
27 }; 27 };
28
29 /** @private {!UpdateStatus} */
30 this.updateStatus_ = UpdateStatus.UPDATED;
31
32 if (cr.isChromeOS) {
33 /** @private {!BrowserChannel} */
34 this.currentChannel_ = BrowserChannel.BETA;
35
36 /** @private {!BrowserChannel} */
37 this.targetChannel_ = BrowserChannel.BETA;
38 }
28 }; 39 };
29 40
30 TestAboutPageBrowserProxy.prototype = { 41 TestAboutPageBrowserProxy.prototype = {
31 __proto__: settings.TestBrowserProxy.prototype, 42 __proto__: settings.TestBrowserProxy.prototype,
32 43
33 /** @param {!VersionInfo} */ 44 /** @param {!VersionInfo} */
34 setVersionInfo: function(versionInfo) { 45 setVersionInfo: function(versionInfo) {
35 this.versionInfo_ = versionInfo; 46 this.versionInfo_ = versionInfo;
36 }, 47 },
37 48
49 /** @param {!UpdateStatus} updateStatus */
50 setUpdateStatus: function(updateStatus) {
51 this.updateStatus_ = updateStatus;
52 },
53
38 /** @override */ 54 /** @override */
39 pageReady: function() { 55 pageReady: function() {
40 this.methodCalled('pageReady'); 56 this.methodCalled('pageReady');
41 }, 57 },
42 58
43 /** @override */ 59 /** @override */
44 refreshUpdateStatus: function() { 60 refreshUpdateStatus: function() {
61 cr.webUIListenerCallback(
62 'update-status-changed', {status: this.updateStatus_});
45 this.methodCalled('refreshUpdateStatus'); 63 this.methodCalled('refreshUpdateStatus');
46 }, 64 },
47 65
48 /** @override */ 66 /** @override */
49 getCurrentChannel: function() {
50 this.methodCalled('getCurrentChannel');
51 return Promise.resolve(BrowserChannel.BETA);
52 },
53
54 /** @override */
55 getTargetChannel: function() {
56 this.methodCalled('getTargetChannel');
57 return Promise.resolve(BrowserChannel.BETA);
58 },
59
60 /** @override */
61 getVersionInfo: function() {
62 this.methodCalled('getVersionInfo');
63 return Promise.resolve(this.versionInfo_);
64 },
65
66 /** @override */
67 openFeedbackDialog: function() { 67 openFeedbackDialog: function() {
68 this.methodCalled('openFeedbackDialog'); 68 this.methodCalled('openFeedbackDialog');
69 }, 69 },
70 70
71 /** @override */ 71 /** @override */
72 openHelpPage: function() { 72 openHelpPage: function() {
73 this.methodCalled('openHelpPage'); 73 this.methodCalled('openHelpPage');
74 }, 74 },
75 }; 75 };
76 76
77 if (cr.isChromeOS) {
78 /**
79 * @param {!BrowserChannel} current
80 * @param {!BrowserChannel} target
81 */
82 TestAboutPageBrowserProxy.prototype.setChannels = function(
83 current, target) {
84 this.currentChannel_ = current;
85 this.targetChannel_ = target;
86 };
87
88 /** @override */
89 TestAboutPageBrowserProxy.prototype.getCurrentChannel = function() {
90 this.methodCalled('getCurrentChannel');
91 return Promise.resolve(this.currentChannel_);
92 };
93
94 /** @override */
95 TestAboutPageBrowserProxy.prototype.getTargetChannel = function() {
96 this.methodCalled('getTargetChannel');
97 return Promise.resolve(this.targetChannel_);
98 };
99
100 /** @override */
101 TestAboutPageBrowserProxy.prototype.getVersionInfo = function() {
102 this.methodCalled('getVersionInfo');
103 return Promise.resolve(this.versionInfo_);
104 };
105 }
106
107
77 function registerAboutPageTests() { 108 function registerAboutPageTests() {
109 /** @param {!UpdateStatus} status */
110 function fireStatusChanged(status) {
111 cr.webUIListenerCallback('update-status-changed', {status: status});
112 }
113
78 suite('AboutPageTest', function() { 114 suite('AboutPageTest', function() {
79 var page = null; 115 var page = null;
80 var browserProxy = null; 116 var browserProxy = null;
81 117
82 setup(function() { 118 setup(function() {
83 browserProxy = new TestAboutPageBrowserProxy(); 119 browserProxy = new TestAboutPageBrowserProxy();
84 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; 120 settings.AboutPageBrowserProxyImpl.instance_ = browserProxy;
121 return initNewPage();
122 });
123
124 /** @return {!Promise} */
125 function initNewPage() {
126 browserProxy.resetResolver('refreshUpdateStatus');
85 PolymerTest.clearBody(); 127 PolymerTest.clearBody();
86 page = document.createElement('settings-about-page'); 128 page = document.createElement('settings-about-page');
87 document.body.appendChild(page); 129 document.body.appendChild(page);
88 return browserProxy.whenCalled('refreshUpdateStatus'); 130 return browserProxy.whenCalled('refreshUpdateStatus');
89 }); 131 }
90 132
91 /** 133 /**
92 * Test that the status icon updates according to incoming 134 * Test that the status icon updates according to incoming
93 * 'update-status-chanhed' events. 135 * 'update-status-changed' events.
94 */ 136 */
95 test('IconUpdates', function() { 137 test('IconUpdates', function() {
96 function fireStatusChanged(status) {
97 cr.webUIListenerCallback('update-status-changed', {
98 status: status, message: '', progress: 0,
99 });
100 }
101
102 var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; 138 var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg';
103 139
104 var icon = page.$$('iron-icon'); 140 var icon = page.$$('iron-icon');
105 assertTrue(!!icon); 141 assertTrue(!!icon);
106 assertEquals(null, icon.getAttribute('icon'));
107 142
108 fireStatusChanged(UpdateStatus.CHECKING); 143 fireStatusChanged(UpdateStatus.CHECKING);
109 assertEquals(SPINNER_ICON, icon.src); 144 assertEquals(SPINNER_ICON, icon.src);
110 assertEquals(null, icon.getAttribute('icon')); 145 assertEquals(null, icon.getAttribute('icon'));
111 146
112 fireStatusChanged(UpdateStatus.UPDATING); 147 fireStatusChanged(UpdateStatus.UPDATING);
113 assertEquals(SPINNER_ICON, icon.src); 148 assertEquals(SPINNER_ICON, icon.src);
114 assertEquals(null, icon.getAttribute('icon')); 149 assertEquals(null, icon.getAttribute('icon'));
115 150
116 fireStatusChanged(UpdateStatus.NEARLY_UPDATED); 151 fireStatusChanged(UpdateStatus.NEARLY_UPDATED);
(...skipping 10 matching lines...) Expand all
127 162
128 fireStatusChanged(UpdateStatus.FAILED); 163 fireStatusChanged(UpdateStatus.FAILED);
129 assertEquals(null, icon.src); 164 assertEquals(null, icon.src);
130 assertEquals('settings:error', icon.icon); 165 assertEquals('settings:error', icon.icon);
131 166
132 fireStatusChanged(UpdateStatus.DISABLED); 167 fireStatusChanged(UpdateStatus.DISABLED);
133 assertEquals(null, icon.src); 168 assertEquals(null, icon.src);
134 assertEquals(null, icon.getAttribute('icon')); 169 assertEquals(null, icon.getAttribute('icon'));
135 }); 170 });
136 171
172 if (cr.isChromeOS) {
173 /**
174 * Test that all buttons update according to incoming
175 * 'update-status-changed' events for the case where target and current
176 * channel are the same.
177 */
178 test('ButtonsUpdate_SameChannel', function() {
179 var relaunch = page.$.relaunch;
180 var checkForUpdates = page.$.checkForUpdates;
181 var relaunchAndPowerwash = page.$.relaunchAndPowerwash;
182
183 assertTrue(!!relaunch);
184 assertTrue(!!relaunchAndPowerwash);
185 assertTrue(!!checkForUpdates);
186
187 function assertAllHidden() {
188 assertTrue(checkForUpdates.hidden);
189 assertTrue(relaunch.hidden);
190 assertTrue(relaunchAndPowerwash.hidden);
191 }
192
193 // Check that |UPDATED| status is ignored if the user has not
194 // explicitly checked for updates yet.
195 fireStatusChanged(UpdateStatus.UPDATED);
196 assertFalse(checkForUpdates.hidden);
197 assertTrue(relaunch.hidden);
198 assertTrue(relaunchAndPowerwash.hidden);
199
200 fireStatusChanged(UpdateStatus.CHECKING);
201 assertAllHidden();
202
203 fireStatusChanged(UpdateStatus.UPDATING);
204 assertAllHidden();
205
206 fireStatusChanged(UpdateStatus.NEARLY_UPDATED);
207 assertTrue(checkForUpdates.hidden);
208 assertFalse(relaunch.hidden);
209 assertTrue(relaunchAndPowerwash.hidden);
210
211 fireStatusChanged(UpdateStatus.UPDATED);
212 assertAllHidden();
213
214 fireStatusChanged(UpdateStatus.FAILED);
215 assertFalse(checkForUpdates.hidden);
216 assertTrue(relaunch.hidden);
217 assertTrue(relaunchAndPowerwash.hidden);
218
219 fireStatusChanged(UpdateStatus.DISABLED);
220 assertAllHidden();
221
222 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN);
223 assertAllHidden();
224 });
225
226 /**
227 * Test that buttons update according to incoming
228 * 'update-status-changed' events for the case where the target channel
229 * is more stable than current channel.
230 */
231 test('ButtonsUpdate_BetaToStable', function() {
232 browserProxy.setChannels(BrowserChannel.BETA, BrowserChannel.STABLE);
233 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED);
234
235 return initNewPage().then(function() {
236 assertTrue(!!page.$.relaunch);
237 assertTrue(!!page.$.relaunchAndPowerwash);
238
239 assertTrue(page.$.relaunch.hidden);
240 assertFalse(page.$.relaunchAndPowerwash.hidden);
241 });
242 });
243
244 /**
245 * Test that buttons update according to incoming
246 * 'update-status-changed' events for the case where the target channel
247 * is less stable than current channel.
248 */
249 test('ButtonsUpdate_StableToBeta', function() {
250 browserProxy.setChannels(BrowserChannel.STABLE, BrowserChannel.BETA);
251 browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED);
252
253 return initNewPage().then(function() {
254 assertTrue(!!page.$.relaunch);
255 assertTrue(!!page.$.relaunchAndPowerwash);
256
257 assertFalse(page.$.relaunch.hidden);
258 assertTrue(page.$.relaunchAndPowerwash.hidden);
259 });
260 });
261 }
262
263 if (!cr.isChromeOS) {
264 /*
265 * Test that the "Check for updates" button updates according to
266 * incoming 'update-status-changed' events.
267 */
268 test('ButtonsUpdate', function() {
269 var relaunch = page.$.relaunch;
270 assertTrue(!!relaunch);
271
272 fireStatusChanged(UpdateStatus.CHECKING);
273 assertTrue(relaunch.hidden);
274
275 fireStatusChanged(UpdateStatus.UPDATING);
276 assertTrue(relaunch.hidden);
277
278 fireStatusChanged(UpdateStatus.NEARLY_UPDATED);
279 assertFalse(relaunch.hidden);
280
281 fireStatusChanged(UpdateStatus.UPDATED);
282 assertTrue(relaunch.hidden);
283
284 fireStatusChanged(UpdateStatus.FAILED);
285 assertTrue(relaunch.hidden);
286
287 fireStatusChanged(UpdateStatus.DISABLED);
288 assertTrue(relaunch.hidden);
289
290 fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN);
291 assertTrue(relaunch.hidden);
292 });
293 }
294
137 test('GetHelp', function() { 295 test('GetHelp', function() {
138 assertTrue(!!page.$.help); 296 assertTrue(!!page.$.help);
139 MockInteractions.tap(page.$.help); 297 MockInteractions.tap(page.$.help);
140 return browserProxy.whenCalled('openHelpPage'); 298 return browserProxy.whenCalled('openHelpPage');
141 }); 299 });
142 }); 300 });
143 } 301 }
144 302
145 function registerOfficialBuildTests() { 303 function registerOfficialBuildTests() {
146 suite('AboutPageTest_OfficialBuild', function() { 304 suite('AboutPageTest_OfficialBuild', function() {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 return { 363 return {
206 registerTests: function() { 364 registerTests: function() {
207 if (cr.isChromeOS) { 365 if (cr.isChromeOS) {
208 registerDetailedBuildInfoTests(); 366 registerDetailedBuildInfoTests();
209 } 367 }
210 registerAboutPageTests(); 368 registerAboutPageTests();
211 }, 369 },
212 registerOfficialBuildTests: registerOfficialBuildTests, 370 registerOfficialBuildTests: registerOfficialBuildTests,
213 }; 371 };
214 }); 372 });
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698