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

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

Issue 2676643005: MD Settings: Fix reset_page_test.js in Vulcanized mode (Closed)
Patch Set: Created 3 years, 10 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_reset_page', function() { 5 /** @enum {string} */
Dan Beam 2017/02/06 21:50:41 can you unwrap this in a separate CL?
dpapad 2017/02/06 23:06:32 Done.
6 /** @enum {string} */ 6 var TestNames = {
dpapad 2017/02/03 20:05:01 The diff in this file is a bit misleading, because
7 var TestNames = { 7 PowerwashDialogAction: 'PowerwashDialogAction',
8 PowerwashDialogAction: 'PowerwashDialogAction', 8 PowerwashDialogOpenClose: 'PowerwashDialogOpenClose',
9 PowerwashDialogOpenClose: 'PowerwashDialogOpenClose', 9 ResetProfileDialogAction: 'ResetProfileDialogAction',
10 ResetBannerClose: 'ResetBannerClose', 10 ResetProfileDialogOpenClose: 'ResetProfileDialogOpenClose',
11 ResetBannerReset: 'ResetBannerReset', 11 ResetProfileDialogOriginUnknown: 'ResetProfileDialogOriginUnknown',
12 ResetProfileDialogAction: 'ResetProfileDialogAction', 12 ResetProfileDialogOriginUserClick: 'ResetProfileDialogOriginUserClick',
13 ResetProfileDialogOpenClose: 'ResetProfileDialogOpenClose', 13 ResetProfileDialogOriginTriggeredReset:
14 ResetProfileDialogOriginUnknown: 'ResetProfileDialogOriginUnknown', 14 'ResetProfileDialogOriginTriggeredReset',
15 ResetProfileDialogOriginUserClick: 'ResetProfileDialogOriginUserClick', 15 };
16 ResetProfileDialogOriginTriggeredReset: 16
17 'ResetProfileDialogOriginTriggeredReset', 17 suite('DialogTests', function() {
18 }; 18 var resetPage = null;
19
20 /** @type {!settings.ResetPageBrowserProxy} */
21 var resetPageBrowserProxy = null;
22
23 /** @type {!settings.LifetimeBrowserProxy} */
24 var lifetimeBrowserProxy = null;
25
26 setup(function() {
27 if (cr.isChromeOS) {
28 lifetimeBrowserProxy = new settings.TestLifetimeBrowserProxy();
29 settings.LifetimeBrowserProxyImpl.instance_ = lifetimeBrowserProxy;
30 }
31
32 resetPageBrowserProxy = new reset_page.TestResetBrowserProxy();
33 settings.ResetBrowserProxyImpl.instance_ = resetPageBrowserProxy;
34
35 PolymerTest.clearBody();
36 resetPage = document.createElement('settings-reset-page');
37 document.body.appendChild(resetPage);
38 });
39
40 teardown(function() { resetPage.remove(); });
19 41
20 /** 42 /**
21 * @constructor 43 * @param {function(SettingsResetProfileDialogElemeent)}
22 * @implements {settings.ResetBrowserProxy} 44 * closeDialogFn A function to call for closing the dialog.
23 * @extends {settings.TestBrowserProxy} 45 * @return {!Promise}
24 */ 46 */
25 var TestResetBrowserProxy = function() { 47 function testOpenCloseResetProfileDialog(closeDialogFn) {
26 settings.TestBrowserProxy.call(this, [ 48 resetPageBrowserProxy.resetResolver('onShowResetProfileDialog');
27 'performResetProfileSettings', 49 resetPageBrowserProxy.resetResolver('onHideResetProfileDialog');
28 'onHideResetProfileDialog', 50
29 'onHideResetProfileBanner', 51 // Open reset profile dialog.
30 'onShowResetProfileDialog', 52 MockInteractions.tap(resetPage.$.resetProfile);
31 'showReportedSettings', 53 Polymer.dom.flush();
32 'getTriggeredResetToolName', 54 var dialog = resetPage.$$('settings-reset-profile-dialog');
33 'onPowerwashDialogShow', 55 assertTrue(!!dialog);
34 ]); 56 var onDialogClosed = new Promise(
35 }; 57 function(resolve, reject) {
36 58 dialog.addEventListener('close', function() {
37 TestResetBrowserProxy.prototype = { 59 assertFalse(dialog.$.dialog.open);
38 __proto__: settings.TestBrowserProxy.prototype, 60 resolve();
39 61 });
40 /** @override */ 62 });
41 performResetProfileSettings: function(sendSettings, requestOrigin) { 63
42 this.methodCalled('performResetProfileSettings', requestOrigin); 64 return PolymerTest.flushTasks().then(function() {
43 return Promise.resolve(); 65 resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
44 }, 66 .then(function() {
45 67 assertTrue(dialog.$.dialog.open);
46 /** @override */ 68 closeDialogFn(dialog);
47 onHideResetProfileDialog: function() { 69 return Promise.all([
48 this.methodCalled('onHideResetProfileDialog'); 70 onDialogClosed,
49 }, 71 resetPageBrowserProxy.whenCalled('onHideResetProfileDialog'),
50 72 ]);
51 /** @override */ 73 });
52 onHideResetProfileBanner: function() { 74 });
53 this.methodCalled('onHideResetProfileBanner'); 75 }
54 }, 76
55 77 // Tests that the reset profile dialog opens and closes correctly and that
56 /** @override */ 78 // resetPageBrowserProxy calls are occurring as expected.
57 onShowResetProfileDialog: function() { 79 test(TestNames.ResetProfileDialogOpenClose, function() {
58 this.methodCalled('onShowResetProfileDialog'); 80 return testOpenCloseResetProfileDialog(function(dialog) {
59 }, 81 // Test case where the 'cancel' button is clicked.
60 82 MockInteractions.tap(dialog.$.cancel);
61 /** @override */ 83 }).then(PolymerTest.flushTasks).then(function() {
62 showReportedSettings: function() { 84 return testOpenCloseResetProfileDialog(function(dialog) {
63 this.methodCalled('showReportedSettings'); 85 // Test case where the 'close' button is clicked.
64 }, 86 MockInteractions.tap(dialog.$.dialog.getCloseButton());
65
66 /** @override */
67 getTriggeredResetToolName: function() {
68 this.methodCalled('getTriggeredResetToolName');
69 return Promise.resolve('WonderfulAV');
70 },
71
72 /** @override */
73 onPowerwashDialogShow: function() {
74 this.methodCalled('onPowerwashDialogShow');
75 },
76 };
77
78 function registerBannerTests() {
79 suite('BannerTests', function() {
80 var resetBanner = null;
81 var browserProxy = null;
82
83 suiteSetup(function() {
84 return PolymerTest.importHtml(
85 'chrome://md-settings/reset_page/reset_profile_banner.html');
86 }); 87 });
87 88 });
88 setup(function() { 89 });
89 browserProxy = new TestResetBrowserProxy(); 90
90 settings.ResetBrowserProxyImpl.instance_ = browserProxy; 91 // Tests that when user request to reset the profile the appropriate
91 PolymerTest.clearBody(); 92 // message is sent to the browser.
92 resetBanner = document.createElement('settings-reset-profile-banner'); 93 test(TestNames.ResetProfileDialogAction, function() {
93 document.body.appendChild(resetBanner); 94 // Open reset profile dialog.
95 MockInteractions.tap(resetPage.$.resetProfile);
96 Polymer.dom.flush();
97 var dialog = resetPage.$$('settings-reset-profile-dialog');
98 assertTrue(!!dialog);
99
100 var showReportedSettingsLink = dialog.$$('.footer a');
101 assertTrue(!!showReportedSettingsLink);
102 MockInteractions.tap(showReportedSettingsLink);
103
104 return resetPageBrowserProxy.whenCalled('showReportedSettings').then(
105 function() {
106 assertFalse(dialog.$.reset.disabled);
107 assertFalse(dialog.$.resetSpinner.active);
108 MockInteractions.tap(dialog.$.reset);
109 assertTrue(dialog.$.reset.disabled);
110 assertTrue(dialog.$.cancel.disabled);
111 assertTrue(dialog.$.resetSpinner.active);
112 return resetPageBrowserProxy.whenCalled(
113 'performResetProfileSettings');
114 });
115 });
116
117 function testResetRequestOrigin(expectedOrigin) {
118 var dialog = resetPage.$$('settings-reset-profile-dialog');
119 assertTrue(!!dialog);
120 MockInteractions.tap(dialog.$.reset);
121 return resetPageBrowserProxy.whenCalled(
122 'performResetProfileSettings').then(function(resetRequest) {
123 assertEquals(expectedOrigin, resetRequest);
124 });
125 }
126
127 test(TestNames.ResetProfileDialogOriginUnknown, function() {
128 settings.navigateTo(settings.Route.RESET_DIALOG);
129 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
130 .then(function() { return testResetRequestOrigin(''); });
131 });
132
133 test(TestNames.ResetProfileDialogOriginUserClick, function() {
134 MockInteractions.tap(resetPage.$.resetProfile);
135 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
136 .then(function() { return testResetRequestOrigin('userclick'); });
137 });
138
139 test(TestNames.ResetProfileDialogOriginTriggeredReset, function() {
140 settings.navigateTo(settings.Route.TRIGGERED_RESET_DIALOG);
141 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
142 .then(function() {
143 return testResetRequestOrigin('triggeredreset');
144 });
145 });
146
147 if (cr.isChromeOS) {
148 /**
149 * @param {function(SettingsPowerwashDialogElemeent):!Element}
150 * closeButtonFn A function that returns the button to be used for
151 * closing the dialog.
152 * @return {!Promise}
153 */
154 function testOpenClosePowerwashDialog(closeButtonFn) {
155 // Open powerwash dialog.
156 MockInteractions.tap(resetPage.$.powerwash);
157 Polymer.dom.flush();
158 var dialog = resetPage.$$('settings-powerwash-dialog');
159 assertTrue(!!dialog);
160 assertTrue(dialog.$.dialog.open);
161 var onDialogClosed = new Promise(
162 function(resolve, reject) {
163 dialog.addEventListener('close', function() {
164 assertFalse(dialog.$.dialog.open);
165 resolve();
166 });
167 });
168
169 MockInteractions.tap(closeButtonFn(dialog));
170 return Promise.all([
171 onDialogClosed,
172 resetPageBrowserProxy.whenCalled('onPowerwashDialogShow'),
173 ]);
174 }
175
176 // Tests that the powerwash dialog opens and closes correctly, and
177 // that chrome.send calls are propagated as expected.
178 test(TestNames.PowerwashDialogOpenClose, function() {
179 // Test case where the 'cancel' button is clicked.
180 return testOpenClosePowerwashDialog(function(dialog) {
181 return dialog.$.cancel;
182 }).then(function() {
183 // Test case where the 'close' button is clicked.
184 return testOpenClosePowerwashDialog(function(dialog) {
185 return dialog.$.dialog.getCloseButton();
186 });
94 }); 187 });
95 188 });
96 teardown(function() { resetBanner.remove(); }); 189
97 190 // Tests that when powerwash is requested chrome.send calls are
98 // Tests that the reset profile banner 191 // propagated as expected.
99 // - opens the reset profile dialog when the reset button is clicked. 192 test(TestNames.PowerwashDialogAction, function() {
100 // - reset happens when clicking on the dialog's reset button. 193 // Open powerwash dialog.
101 // - the reset profile dialog is closed after reset is done. 194 MockInteractions.tap(resetPage.$.powerwash);
102 test(TestNames.ResetBannerReset, function() { 195 Polymer.dom.flush();
103 var dialog = resetBanner.$$('settings-reset-profile-dialog'); 196 var dialog = resetPage.$$('settings-powerwash-dialog');
104 assertFalse(!!dialog); 197 assertTrue(!!dialog);
105 MockInteractions.tap(resetBanner.$.reset); 198 MockInteractions.tap(dialog.$.powerwash);
106 Polymer.dom.flush(); 199 return lifetimeBrowserProxy.whenCalled('factoryReset');
107 assertTrue(resetBanner.showResetProfileDialog_)
108 dialog = resetBanner.$$('settings-reset-profile-dialog');
109 assertTrue(!!dialog);
110
111 MockInteractions.tap(dialog.$.reset);
112
113 return browserProxy.whenCalled('performResetProfileSettings')
114 .then(PolymerTest.flushTasks)
115 .then(function() {
116 assertFalse(resetBanner.showResetProfileDialog_);
117 dialog = resetBanner.$$('settings-reset-profile-dialog');
118 assertFalse(!!dialog);
119 });
120 });
121
122 // Tests that the reset profile banner removes itself from the DOM when
123 // the close button is clicked and that |onHideResetProfileBanner| is
124 // called.
125 test(TestNames.ResetBannerClose, function() {
126 MockInteractions.tap(resetBanner.$.close);
127 assertFalse(!!resetBanner.parentNode);
128 return browserProxy.whenCalled('onHideResetProfileBanner');
129 });
130 }); 200 });
131 } 201 }
132
133 function registerDialogTests() {
134 suite('DialogTests', function() {
135 var resetPage = null;
136
137 /** @type {!settings.ResetPageBrowserProxy} */
138 var resetPageBrowserProxy = null;
139
140 /** @type {!settings.LifetimeBrowserProxy} */
141 var lifetimeBrowserProxy = null;
142
143 setup(function() {
144 if (cr.isChromeOS) {
145 lifetimeBrowserProxy = new settings.TestLifetimeBrowserProxy();
146 settings.LifetimeBrowserProxyImpl.instance_ = lifetimeBrowserProxy;
147 }
148
149 resetPageBrowserProxy = new TestResetBrowserProxy();
150 settings.ResetBrowserProxyImpl.instance_ = resetPageBrowserProxy;
151
152 PolymerTest.clearBody();
153 resetPage = document.createElement('settings-reset-page');
154 document.body.appendChild(resetPage);
155 });
156
157 teardown(function() { resetPage.remove(); });
158
159 /**
160 * @param {function(SettingsResetProfileDialogElemeent)}
161 * closeDialogFn A function to call for closing the dialog.
162 * @return {!Promise}
163 */
164 function testOpenCloseResetProfileDialog(closeDialogFn) {
165 resetPageBrowserProxy.resetResolver('onShowResetProfileDialog');
166 resetPageBrowserProxy.resetResolver('onHideResetProfileDialog');
167
168 // Open reset profile dialog.
169 MockInteractions.tap(resetPage.$.resetProfile);
170 Polymer.dom.flush();
171 var dialog = resetPage.$$('settings-reset-profile-dialog');
172 assertTrue(!!dialog);
173 var onDialogClosed = new Promise(
174 function(resolve, reject) {
175 dialog.addEventListener('close', function() {
176 assertFalse(dialog.$.dialog.open);
177 resolve();
178 });
179 });
180
181 return PolymerTest.flushTasks().then(function() {
182 resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
183 .then(function() {
184 assertTrue(dialog.$.dialog.open);
185 closeDialogFn(dialog);
186 return Promise.all([
187 onDialogClosed,
188 resetPageBrowserProxy.whenCalled('onHideResetProfileDialog'),
189 ]);
190 });
191 });
192 }
193
194 // Tests that the reset profile dialog opens and closes correctly and that
195 // resetPageBrowserProxy calls are occurring as expected.
196 test(TestNames.ResetProfileDialogOpenClose, function() {
197 return testOpenCloseResetProfileDialog(function(dialog) {
198 // Test case where the 'cancel' button is clicked.
199 MockInteractions.tap(dialog.$.cancel);
200 }).then(PolymerTest.flushTasks).then(function() {
201 return testOpenCloseResetProfileDialog(function(dialog) {
202 // Test case where the 'close' button is clicked.
203 MockInteractions.tap(dialog.$.dialog.getCloseButton());
204 });
205 });
206 });
207
208 // Tests that when user request to reset the profile the appropriate
209 // message is sent to the browser.
210 test(TestNames.ResetProfileDialogAction, function() {
211 // Open reset profile dialog.
212 MockInteractions.tap(resetPage.$.resetProfile);
213 Polymer.dom.flush();
214 var dialog = resetPage.$$('settings-reset-profile-dialog');
215 assertTrue(!!dialog);
216
217 var showReportedSettingsLink = dialog.$$('.footer a');
218 assertTrue(!!showReportedSettingsLink);
219 MockInteractions.tap(showReportedSettingsLink);
220
221 return resetPageBrowserProxy.whenCalled('showReportedSettings').then(
222 function() {
223 assertFalse(dialog.$.reset.disabled);
224 assertFalse(dialog.$.resetSpinner.active);
225 MockInteractions.tap(dialog.$.reset);
226 assertTrue(dialog.$.reset.disabled);
227 assertTrue(dialog.$.cancel.disabled);
228 assertTrue(dialog.$.resetSpinner.active);
229 return resetPageBrowserProxy.whenCalled(
230 'performResetProfileSettings');
231 });
232 });
233
234 function testResetRequestOrigin(expectedOrigin) {
235 var dialog = resetPage.$$('settings-reset-profile-dialog');
236 assertTrue(!!dialog);
237 MockInteractions.tap(dialog.$.reset);
238 return resetPageBrowserProxy.whenCalled(
239 'performResetProfileSettings').then(function(resetRequest) {
240 assertEquals(expectedOrigin, resetRequest);
241 });
242 }
243
244 test(TestNames.ResetProfileDialogOriginUnknown, function() {
245 settings.navigateTo(settings.Route.RESET_DIALOG);
246 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
247 .then(function() { return testResetRequestOrigin(''); });
248 });
249
250 test(TestNames.ResetProfileDialogOriginUserClick, function() {
251 MockInteractions.tap(resetPage.$.resetProfile);
252 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
253 .then(function() { return testResetRequestOrigin('userclick'); });
254 });
255
256 test(TestNames.ResetProfileDialogOriginTriggeredReset, function() {
257 settings.navigateTo(settings.Route.TRIGGERED_RESET_DIALOG);
258 return resetPageBrowserProxy.whenCalled('onShowResetProfileDialog')
259 .then(function() {
260 return testResetRequestOrigin('triggeredreset');
261 });
262 });
263
264 if (cr.isChromeOS) {
265 /**
266 * @param {function(SettingsPowerwashDialogElemeent):!Element}
267 * closeButtonFn A function that returns the button to be used for
268 * closing the dialog.
269 * @return {!Promise}
270 */
271 function testOpenClosePowerwashDialog(closeButtonFn) {
272 // Open powerwash dialog.
273 MockInteractions.tap(resetPage.$.powerwash);
274 Polymer.dom.flush();
275 var dialog = resetPage.$$('settings-powerwash-dialog');
276 assertTrue(!!dialog);
277 assertTrue(dialog.$.dialog.open);
278 var onDialogClosed = new Promise(
279 function(resolve, reject) {
280 dialog.addEventListener('close', function() {
281 assertFalse(dialog.$.dialog.open);
282 resolve();
283 });
284 });
285
286 MockInteractions.tap(closeButtonFn(dialog));
287 return Promise.all([
288 onDialogClosed,
289 resetPageBrowserProxy.whenCalled('onPowerwashDialogShow'),
290 ]);
291 }
292
293 // Tests that the powerwash dialog opens and closes correctly, and
294 // that chrome.send calls are propagated as expected.
295 test(TestNames.PowerwashDialogOpenClose, function() {
296 // Test case where the 'cancel' button is clicked.
297 return testOpenClosePowerwashDialog(function(dialog) {
298 return dialog.$.cancel;
299 }).then(function() {
300 // Test case where the 'close' button is clicked.
301 return testOpenClosePowerwashDialog(function(dialog) {
302 return dialog.$.dialog.getCloseButton();
303 });
304 });
305 });
306
307 // Tests that when powerwash is requested chrome.send calls are
308 // propagated as expected.
309 test(TestNames.PowerwashDialogAction, function() {
310 // Open powerwash dialog.
311 MockInteractions.tap(resetPage.$.powerwash);
312 Polymer.dom.flush();
313 var dialog = resetPage.$$('settings-powerwash-dialog');
314 assertTrue(!!dialog);
315 MockInteractions.tap(dialog.$.powerwash);
316 return lifetimeBrowserProxy.whenCalled('factoryReset');
317 });
318 }
319 });
320 }
321
322 return {
323 registerTests: function() {
324 registerBannerTests();
325 registerDialogTests();
326 },
327 };
328 }); 202 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698