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

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

Issue 2930953002: MD Settings: Sort "other" search engines alphabetically. (Closed)
Patch Set: Add test. Created 3 years, 6 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/resources/settings/search_engines_page/search_engines_page.js ('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_search_engines_page', function() { 5 cr.define('settings_search_engines_page', function() {
6 /** 6 /**
7 * @param {string} name
7 * @param {boolean} canBeDefault 8 * @param {boolean} canBeDefault
8 * @param {boolean} canBeEdited 9 * @param {boolean} canBeEdited
9 * @param {boolean} canBeRemoved 10 * @param {boolean} canBeRemoved
10 * @return {!SearchEngine} 11 * @return {!SearchEngine}
11 */ 12 */
12 var createSampleSearchEngine = function( 13 function createSampleSearchEngine(
13 canBeDefault, canBeEdited, canBeRemoved) { 14 name, canBeDefault, canBeEdited, canBeRemoved) {
14 return { 15 return {
15 canBeDefault: canBeDefault, 16 canBeDefault: canBeDefault,
16 canBeEdited: canBeEdited, 17 canBeEdited: canBeEdited,
17 canBeRemoved: canBeRemoved, 18 canBeRemoved: canBeRemoved,
18 default: false, 19 default: false,
19 displayName: "Google displayName", 20 displayName: name + " displayName",
20 iconURL: "http://www.google.com/favicon.ico", 21 iconURL: "http://www.google.com/favicon.ico",
21 isOmniboxExtension: false, 22 isOmniboxExtension: false,
22 keyword: "google.com", 23 keyword: "google.com",
23 modelIndex: 0, 24 modelIndex: 0,
24 name: "Google", 25 name: name,
25 url: "https://search.foo.com/search?p=%s", 26 url: "https://search.foo.com/search?p=%s",
26 urlLocked: false, 27 urlLocked: false,
27 }; 28 };
28 }; 29 }
29 30
30 /** @return {!SearchEngine} */ 31 /** @return {!SearchEngine} */
31 var createSampleOmniboxExtension = function() { 32 function createSampleOmniboxExtension() {
32 return { 33 return {
33 canBeDefault: false, 34 canBeDefault: false,
34 canBeEdited: false, 35 canBeEdited: false,
35 canBeRemoved: false, 36 canBeRemoved: false,
36 default: false, 37 default: false,
37 displayName: "Omnibox extension displayName", 38 displayName: "Omnibox extension displayName",
38 extension: { 39 extension: {
39 icon: "chrome://extension-icon/some-extension-icon", 40 icon: "chrome://extension-icon/some-extension-icon",
40 id: "dummyextensionid", 41 id: "dummyextensionid",
41 name: "Omnibox extension" 42 name: "Omnibox extension"
42 }, 43 },
43 isOmniboxExtension: true, 44 isOmniboxExtension: true,
44 keyword: "oe", 45 keyword: "oe",
45 modelIndex: 6, 46 modelIndex: 6,
46 name: "Omnibox extension", 47 name: "Omnibox extension",
47 url: "chrome-extension://dummyextensionid/?q=%s", 48 url: "chrome-extension://dummyextensionid/?q=%s",
48 urlLocked: false 49 urlLocked: false
49 }; 50 };
50 }; 51 }
51 52
52 function registerDialogTests() { 53 function registerDialogTests() {
53 suite('AddSearchEngineDialogTests', function() { 54 suite('AddSearchEngineDialogTests', function() {
54 /** @type {?SettingsAddSearchEngineDialog} */ 55 /** @type {?SettingsAddSearchEngineDialog} */
55 var dialog = null; 56 var dialog = null;
56 var browserProxy = null; 57 var browserProxy = null;
57 58
58 setup(function() { 59 setup(function() {
59 browserProxy = new settings_search.TestSearchEnginesBrowserProxy(); 60 browserProxy = new settings_search.TestSearchEnginesBrowserProxy();
60 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy; 61 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 140
140 function registerSearchEngineEntryTests() { 141 function registerSearchEngineEntryTests() {
141 suite('SearchEngineEntryTests', function() { 142 suite('SearchEngineEntryTests', function() {
142 /** @type {?SettingsSearchEngineEntryElement} */ 143 /** @type {?SettingsSearchEngineEntryElement} */
143 var entry = null; 144 var entry = null;
144 145
145 /** @type {!settings_search.TestSearchEnginesBrowserProxy} */ 146 /** @type {!settings_search.TestSearchEnginesBrowserProxy} */
146 var browserProxy = null; 147 var browserProxy = null;
147 148
148 /** @type {!SearchEngine} */ 149 /** @type {!SearchEngine} */
149 var searchEngine = createSampleSearchEngine(true, true, true); 150 var searchEngine = createSampleSearchEngine('G', true, true, true);
150 151
151 setup(function() { 152 setup(function() {
152 browserProxy = new settings_search.TestSearchEnginesBrowserProxy(); 153 browserProxy = new settings_search.TestSearchEnginesBrowserProxy();
153 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy; 154 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy;
154 PolymerTest.clearBody(); 155 PolymerTest.clearBody();
155 entry = document.createElement('settings-search-engine-entry'); 156 entry = document.createElement('settings-search-engine-entry');
156 entry.set('engine', searchEngine); 157 entry.set('engine', searchEngine);
157 document.body.appendChild(entry); 158 document.body.appendChild(entry);
158 }); 159 });
159 160
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 */ 242 */
242 function testButtonDisabled(searchEngine, buttonId) { 243 function testButtonDisabled(searchEngine, buttonId) {
243 entry.engine = searchEngine; 244 entry.engine = searchEngine;
244 var button = entry.$[buttonId]; 245 var button = entry.$[buttonId];
245 assertTrue(!!button); 246 assertTrue(!!button);
246 assertTrue(button.hidden); 247 assertTrue(button.hidden);
247 } 248 }
248 249
249 test('Remove_Disabled', function() { 250 test('Remove_Disabled', function() {
250 testButtonDisabled( 251 testButtonDisabled(
251 createSampleSearchEngine(true, true, false), 'delete'); 252 createSampleSearchEngine('G', true, true, false), 'delete');
252 }); 253 });
253 254
254 test('MakeDefault_Disabled', function() { 255 test('MakeDefault_Disabled', function() {
255 testButtonDisabled( 256 testButtonDisabled(
256 createSampleSearchEngine(false, true, true), 'makeDefault'); 257 createSampleSearchEngine('G', false, true, true), 'makeDefault');
257 }); 258 });
258 259
259 test('Edit_Disabled', function() { 260 test('Edit_Disabled', function() {
260 testButtonDisabled(createSampleSearchEngine(true, false, true), 'edit'); 261 testButtonDisabled(
262 createSampleSearchEngine('G', true, false, true), 'edit');
261 }); 263 });
262 264
263 test('All_Disabled', function() { 265 test('All_Disabled', function() {
264 entry.engine = createSampleSearchEngine(true, false, false); 266 entry.engine = createSampleSearchEngine('G', true, false, false);
265 Polymer.dom.flush(); 267 Polymer.dom.flush();
266 assertTrue(entry.hasAttribute('show-dots_')); 268 assertTrue(entry.hasAttribute('show-dots_'));
267 269
268 entry.engine = createSampleSearchEngine(false, false, false); 270 entry.engine = createSampleSearchEngine('G', false, false, false);
269 Polymer.dom.flush(); 271 Polymer.dom.flush();
270 assertFalse(entry.hasAttribute('show-dots_')); 272 assertFalse(entry.hasAttribute('show-dots_'));
271 }); 273 });
272 }); 274 });
273 } 275 }
274 276
275 function registerPageTests() { 277 function registerPageTests() {
276 suite('SearchEnginePageTests', function() { 278 suite('SearchEnginePageTests', function() {
277 /** @type {?SettingsSearchEnginesPageElement} */ 279 /** @type {?SettingsSearchEnginesPageElement} */
278 var page = null; 280 var page = null;
279 281
280 var browserProxy = null; 282 var browserProxy = null;
281 283
282 /** @type {!SearchEnginesInfo} */ 284 /** @type {!SearchEnginesInfo} */
283 var searchEnginesInfo = { 285 var searchEnginesInfo = {
284 defaults: [createSampleSearchEngine()], 286 defaults: [createSampleSearchEngine('G', false, false, false)],
285 others: [], 287 others: [
288 createSampleSearchEngine('B', false, false, false),
289 createSampleSearchEngine('A', false, false, false),
290 ],
286 extensions: [createSampleOmniboxExtension()], 291 extensions: [createSampleOmniboxExtension()],
287 }; 292 };
288 293
289 setup(function() { 294 setup(function() {
290 browserProxy = new settings_search.TestSearchEnginesBrowserProxy(); 295 browserProxy = new settings_search.TestSearchEnginesBrowserProxy();
291 browserProxy.setSearchEnginesInfo(searchEnginesInfo); 296
297 // Purposefully pass a clone of |searchEnginesInfo| to avoid any
298 // mutations on ground truth data.
299 browserProxy.setSearchEnginesInfo({
300 defaults: searchEnginesInfo.defaults.slice(),
301 others: searchEnginesInfo.others.slice(),
302 extensions: searchEnginesInfo.extensions.slice(),
303 });
292 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy; 304 settings.SearchEnginesBrowserProxyImpl.instance_ = browserProxy;
293 PolymerTest.clearBody(); 305 PolymerTest.clearBody();
294 page = document.createElement('settings-search-engines-page'); 306 page = document.createElement('settings-search-engines-page');
295 document.body.appendChild(page); 307 document.body.appendChild(page);
296 return browserProxy.whenCalled('getSearchEnginesList'); 308 return browserProxy.whenCalled('getSearchEnginesList');
297 }); 309 });
298 310
299 teardown(function() { page.remove(); }); 311 teardown(function() { page.remove(); });
300 312
301 // Tests that the page is querying and displaying search engine info on 313 // Tests that the page is querying and displaying search engine info on
(...skipping 11 matching lines...) Expand all
313 querySelector('iron-list').items; 325 querySelector('iron-list').items;
314 assertEquals( 326 assertEquals(
315 searchEnginesInfo.defaults.length, defaultsEntries.length); 327 searchEnginesInfo.defaults.length, defaultsEntries.length);
316 328
317 var othersList = searchEnginesLists[1]; 329 var othersList = searchEnginesLists[1];
318 var othersEntries = Polymer.dom(othersList.shadowRoot). 330 var othersEntries = Polymer.dom(othersList.shadowRoot).
319 querySelector('iron-list').items; 331 querySelector('iron-list').items;
320 assertEquals( 332 assertEquals(
321 searchEnginesInfo.others.length, othersEntries.length); 333 searchEnginesInfo.others.length, othersEntries.length);
322 334
335 // Ensure that the search engines have reverse alphabetical order in the
336 // model.
337 assertGT(
338 searchEnginesInfo.others[0].name, searchEnginesInfo.others[1].name);
339
340 // Ensure that they are displayed in alphabetical order.
341 assertEquals(searchEnginesInfo.others[1].name, othersEntries[0].name);
342 assertEquals(searchEnginesInfo.others[0].name, othersEntries[1].name);
343
323 var extensionEntries = Polymer.dom(page.shadowRoot). 344 var extensionEntries = Polymer.dom(page.shadowRoot).
324 querySelector('iron-list').items; 345 querySelector('iron-list').items;
325 assertEquals( 346 assertEquals(
326 searchEnginesInfo.extensions.length, extensionEntries.length); 347 searchEnginesInfo.extensions.length, extensionEntries.length);
327 }); 348 });
328 349
329 // Test that the "no other search engines" message is shown/hidden as 350 // Test that the "no other search engines" message is shown/hidden as
330 // expected. 351 // expected.
331 test('NoOtherSearchEnginesMessage', function() { 352 test('NoOtherSearchEnginesMessage', function() {
353 cr.webUIListenerCallback('search-engines-changed', {
354 defaults: [], others: [], extensions: [],
355 });
356
332 var message = page.root.querySelector('#noOtherEngines'); 357 var message = page.root.querySelector('#noOtherEngines');
333 assertTrue(!!message); 358 assertTrue(!!message);
334 assertFalse(message.hasAttribute('hidden')); 359 assertFalse(message.hasAttribute('hidden'));
335 360
336 cr.webUIListenerCallback('search-engines-changed', { 361 cr.webUIListenerCallback('search-engines-changed', {
337 defaults: [], 362 defaults: [],
338 others: [createSampleSearchEngine()], 363 others: [createSampleSearchEngine('G', false, false, false)],
339 extensions: [], 364 extensions: [],
340 }); 365 });
341 assertTrue(message.hasAttribute('hidden')); 366 assertTrue(message.hasAttribute('hidden'));
342 }); 367 });
343 368
344 // Tests that the add search engine dialog opens when the corresponding 369 // Tests that the add search engine dialog opens when the corresponding
345 // button is tapped. 370 // button is tapped.
346 test('AddSearchEngineDialog', function() { 371 test('AddSearchEngineDialog', function() {
347 assertFalse(!!page.$$('settings-search-engine-dialog')); 372 assertFalse(!!page.$$('settings-search-engine-dialog'));
348 var addSearchEngineButton = page.$.addSearchEngine; 373 var addSearchEngineButton = page.$.addSearchEngine;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 425
401 return { 426 return {
402 registerTests: function() { 427 registerTests: function() {
403 registerDialogTests(); 428 registerDialogTests();
404 registerSearchEngineEntryTests(); 429 registerSearchEngineEntryTests();
405 registerOmniboxExtensionEntryTests(); 430 registerOmniboxExtensionEntryTests();
406 registerPageTests(); 431 registerPageTests();
407 }, 432 },
408 }; 433 };
409 }); 434 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/settings/search_engines_page/search_engines_page.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698