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

Side by Side Diff: chrome/browser/ui/webui/sync_internals_browsertest.js

Issue 160083002: Refactor about:sync's events framework (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test assertions Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 /** 5 /**
6 * Test fixture for sync internals WebUI testing. 6 * Test fixture for sync internals WebUI testing.
7 * @constructor 7 * @constructor
8 * @extends {testing.Test} 8 * @extends {testing.Test}
9 */ 9 */
10 function SyncInternalsWebUITest() {} 10 function SyncInternalsWebUITest() {}
11 11
12 SyncInternalsWebUITest.prototype = { 12 SyncInternalsWebUITest.prototype = {
13 __proto__: testing.Test.prototype, 13 __proto__: testing.Test.prototype,
14 14
15 /** 15 /**
16 * Browse to the sync internals page. 16 * Browse to the sync internals page.
17 * @override 17 * @override
18 */ 18 */
19 browsePreload: 'chrome://sync-internals', 19 browsePreload: 'chrome://sync-internals',
20 20
21 /**
22 * Disable accessibility testing for this page.
23 * @override
24 */
25 runAccessibilityChecks: false,
26
21 /** @override */ 27 /** @override */
22 preLoad: function() { 28 preLoad: function() {
23 this.makeAndRegisterMockHandler([ 29 this.makeAndRegisterMockHandler([
24 'getAllNodes', 30 'getAllNodes',
25 ]); 31 ]);
26 }, 32 },
27 33
28 /** 34 /**
29 * Checks aboutInfo's details section for the specified field. 35 * Checks aboutInfo's details section for the specified field.
30 * @param {boolean} isValid Whether the field is valid. 36 * @param {boolean} isValid Whether the field is valid.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 "TRANSACTION_VERSION": "1", 157 "TRANSACTION_VERSION": "1",
152 "UNIQUE_BOOKMARK_TAG": "", 158 "UNIQUE_BOOKMARK_TAG": "",
153 "UNIQUE_CLIENT_TAG": "J28uWKpXPuQwR3SJKbuLqzYGOcM=", 159 "UNIQUE_CLIENT_TAG": "J28uWKpXPuQwR3SJKbuLqzYGOcM=",
154 "UNIQUE_POSITION": "INVALID[]", 160 "UNIQUE_POSITION": "INVALID[]",
155 "UNIQUE_SERVER_TAG": "", 161 "UNIQUE_SERVER_TAG": "",
156 "isDirty": false, 162 "isDirty": false,
157 "serverModelType": "Typed URLs" 163 "serverModelType": "Typed URLs"
158 } 164 }
159 ]; 165 ];
160 166
167 HARD_CODED_ABOUT_INFO = {
Dan Beam 2014/02/12 01:25:00 nit: /** @const */ var HARD_CODED_ABOUT_INFO = {
rlarocque 2014/02/12 02:07:39 Done.
168 "actionable_error": [
169 {
170 "is_valid": false,
171 "stat_name": "Error Type",
172 "stat_value": "Uninitialized"
173 },
174 {
175 "is_valid": false,
176 "stat_name": "Action",
177 "stat_value": "Uninitialized"
178 },
179 {
180 "is_valid": false,
181 "stat_name": "URL",
182 "stat_value": "Uninitialized"
183 },
184 {
185 "is_valid": false,
186 "stat_name": "Error Description",
187 "stat_value": "Uninitialized"
188 }
189 ],
190 "actionable_error_detected": false,
191 "details": [
192 {
193 "data": [
194 {
195 "is_valid": true,
196 "stat_name": "Summary",
197 "stat_value": "Sync service initialized"
198 }
199 ],
200 "is_sensitive": false,
201 "title": "Summary"
202 },
203 ],
204 "type_status": [
205 {
206 "name": "Model Type",
207 "num_entries": "Total Entries",
208 "num_live": "Live Entries",
209 "status": "header",
210 "value": "Group Type"
211 },
212 {
213 "name": "Bookmarks",
214 "num_entries": 2793,
215 "num_live": 2793,
216 "status": "ok",
217 "value": "Active: GROUP_UI"
218 },
219 ],
220 "unrecoverable_error_detected": false
221 };
222
161 TEST_F('SyncInternalsWebUITest', 'Uninitialized', function() { 223 TEST_F('SyncInternalsWebUITest', 'Uninitialized', function() {
162 assertNotEquals(null, chrome.sync.aboutInfo); 224 assertNotEquals(null, chrome.sync.aboutInfo);
163 expectTrue(this.hasInDetails(true, 'Username', '')); 225 expectTrue(this.hasInDetails(true, 'Username', ''));
164 expectTrue(this.hasInDetails(false, 'Summary', 'Uninitialized')); 226 expectTrue(this.hasInDetails(false, 'Summary', 'Uninitialized'));
165 }); 227 });
166 228
229 TEST_F('SyncInternalsWebUITest', 'LoadPastedAboutInfo', function() {
230 // Expose the text field.
231 $('import-status').click();
232
233 // Fill it with fake data.
234 $('status-text').value = JSON.stringify(HARD_CODED_ABOUT_INFO);
235
236 // Trigger the import.
237 $('import-status').click();
238
239 expectTrue(this.hasInDetails(true, 'Summary', 'Sync service initialized'));
240 });
241
167 TEST_F('SyncInternalsWebUITest', 'SearchTabDoesntChangeOnItemSelect', 242 TEST_F('SyncInternalsWebUITest', 'SearchTabDoesntChangeOnItemSelect',
168 function() { 243 function() {
169 // Select the search tab. 244 // Select the search tab.
170 $('sync-search-tab').selected = true; 245 $('sync-search-tab').selected = true;
171 expectTrue($('sync-search-tab').selected); 246 expectTrue($('sync-search-tab').selected);
172 247
173 // Build the data model and attach to result list. 248 // Build the data model and attach to result list.
174 cr.ui.List.decorate($('sync-results-list')); 249 cr.ui.List.decorate($('sync-results-list'));
175 $('sync-results-list').dataModel = new cr.ui.ArrayDataModel([ 250 $('sync-results-list').dataModel = new cr.ui.ArrayDataModel([
176 { 251 {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 // Selecting the tab will refresh it. 309 // Selecting the tab will refresh it.
235 $('sync-browser-tab').selected = true; 310 $('sync-browser-tab').selected = true;
236 expectNotEquals($('node-browser-refresh-time').textContent, 'Never'); 311 expectNotEquals($('node-browser-refresh-time').textContent, 'Never');
237 312
238 // Re-selecting the tab shouldn't re-refresh. 313 // Re-selecting the tab shouldn't re-refresh.
239 $('node-browser-refresh-time').textContent = 'TestCanary'; 314 $('node-browser-refresh-time').textContent = 'TestCanary';
240 $('sync-browser-tab').selected = false; 315 $('sync-browser-tab').selected = false;
241 $('sync-browser-tab').selected = true; 316 $('sync-browser-tab').selected = true;
242 expectEquals($('node-browser-refresh-time').textContent, 'TestCanary'); 317 expectEquals($('node-browser-refresh-time').textContent, 'TestCanary');
243 }); 318 });
319
320 // Tests that the events log page correctly receives and displays an event.
321 TEST_F('SyncInternalsWebUITest', 'EventLogTest', function() {
322 // Dispatch an event.
323 var connectionEvent = new Event('onConnectionStatusChange');
324 connectionEvent.details = {'status': 'CONNECTION_OK'};
325 chrome.sync.events.dispatchEvent(connectionEvent);
326
327 // Verify that it is displayed in the events log.
328 var syncEventsTable = $('sync-events');
329 var firstRow = syncEventsTable.children[0];
330
331 // Makes some assumptions about column ordering. We'll need re-think this if
332 // it turns out to be a maintenance burden.
333 assertEquals(4, firstRow.children.length);
334 var submoduleName = firstRow.children[1].textContent;
335 var eventName = firstRow.children[2].textContent;
336 var detailsText = firstRow.children[3].textContent;
337
338 expectGE(submoduleName.indexOf('manager'), 0,
339 'submoduleName=' + submoduleName);
340 expectGE(eventName.indexOf('onConnectionStatusChange'), 0,
341 'eventName=' + eventName);
342 expectGE(detailsText.indexOf('CONNECTION_OK'), 0,
343 'detailsText=' + detailsText);
344 });
345
346 TEST_F('SyncInternalsWebUITest', 'DumpSyncEventsToText', function() {
347 // Dispatch an event.
348 var connectionEvent = new Event('onConnectionStatusChange');
349 connectionEvent.details = { 'status': 'CONNECTION_OK' }
Dan Beam 2014/02/12 01:25:00 remove \s between { and } here, too
rlarocque 2014/02/12 02:07:39 Done.
350 chrome.sync.events.dispatchEvent(connectionEvent);
351
352 // Click the dump-to-text button.
353 $('dump-to-text').click();
354
355 // Verify our event is among the results.
356 var eventDumpText = $('data-dump').textContent;
357
358 expectTrue(eventDumpText.indexOf('onConnectionStatusChange') != -1);
359 expectTrue(eventDumpText.indexOf('CONNECTION_OK') != -1);
Dan Beam 2014/02/12 01:25:00 ^ update these as well, IMO, to use expectNE
rlarocque 2014/02/12 02:07:39 I went with GE 0, since that's what I ended up usi
360 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698