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

Unified Diff: chrome/test/data/webui/settings/dropdown_menu_tests.js

Issue 1422023012: MD Settings: Simplify settings-dropdown-menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix updateSelected Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/settings/dropdown_menu_tests.js
diff --git a/chrome/test/data/webui/settings/dropdown_menu_tests.js b/chrome/test/data/webui/settings/dropdown_menu_tests.js
new file mode 100644
index 0000000000000000000000000000000000000000..29c479ae7874c4c24a3aeb6354d39ef9c2516128
--- /dev/null
+++ b/chrome/test/data/webui/settings/dropdown_menu_tests.js
@@ -0,0 +1,107 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/** @fileoverview Suite of tests for settings-dropdown-menu. */
+cr.define('settings_dropdown_menu', function() {
+ function registerTests() {
+ suite('SettingsDropdownMenu', function() {
+ // Import settings_dropdown_menu.html before running suite.
+ suiteSetup(function() {
+ return Promise.all([
+ PolymerTest.importHtml('chrome://md-settings/i18n_setup.html'),
+ PolymerTest.importHtml(
+ 'chrome://md-settings/controls/settings_dropdown_menu.html'),
+ ]);
+ });
+
+ var getSelectable = function(dropdownMenu) {
+ return dropdownMenu.$$('paper-menu');
+ };
+
+ setup(PolymerTest.clearBody);
+
+ test('with number options', function testNumberOptions(done) {
+ var dropdown = document.createElement('settings-dropdown-menu');
+
+ dropdown.pref = {
+ key: 'test.number',
+ type: chrome.settingsPrivate.PrefType.NUMBER,
+ value: 100,
+ };
+ dropdown.menuOptions = [[100, 'Option 100'], [200, 'Option 200'],
+ [300, 'Option 300'], [400, 'Option 400']];
+ document.body.appendChild(dropdown);
+
+ setTimeout(function() {
+ // Initially selected item.
+ var selectedItem = getSelectable(dropdown).selectedItem;
stevenjb 2015/11/17 18:19:23 We call getSelectable(dropdown) a lot, any reason
michaelpg 2015/11/18 01:08:39 Not really. I changed setup to create the dropdown
+ assertEquals('Option 100', selectedItem.textContent.trim());
+
+ // Selecting an item updates the pref.
+ getSelectable(dropdown).selected = '200';
+ assertEquals(200, dropdown.pref.value);
+
+ // Updating the pref selects an item.
+ dropdown.set('pref.value', 400);
+ assertEquals('400', getSelectable(dropdown).selected);
+ done();
+ });
+ });
+
+ test('with string options', function testStringOptions(done) {
+ var dropdown = document.createElement('settings-dropdown-menu');
stevenjb 2015/11/17 18:19:23 We seem to do this in every test, can we do it in
michaelpg 2015/11/18 01:08:39 Done.
+ dropdown.pref = {
+ key: 'test.string',
+ type: chrome.settingsPrivate.PrefType.STRING,
+ value: 'c',
+ };
+ dropdown.menuOptions =
+ [['a', 'AAA'], ['b', 'BBB'], ['c', 'CCC'], ['d', 'DDD']];
+
+ document.body.appendChild(dropdown);
+
+ setTimeout(function() {
+ // Initially selected item.
+ var selectedItem = getSelectable(dropdown).selectedItem;
+ assertEquals('CCC', selectedItem.textContent.trim());
+
+ // Selecting an item updates the pref.
+ getSelectable(dropdown).selected = 'a';
+ assertEquals('a', dropdown.pref.value);
+
+ // Updating the pref selects an item.
+ dropdown.set('pref.value', 'b');
+ assertEquals('b', getSelectable(dropdown).selected);
+ done();
+ });
+ });
+
+ test('with custom value', function testCustomValue(done) {
+ var dropdown = document.createElement('settings-dropdown-menu');
+ dropdown.pref = {
+ key: 'test.string',
+ type: chrome.settingsPrivate.PrefType.STRING,
+ value: 'f',
+ };
+ dropdown.menuOptions =
+ [['a', 'AAA'], ['b', 'BBB'], ['c', 'CCC'], ['d', 'DDD']];
+
+ document.body.appendChild(dropdown);
+
+ setTimeout(function() {
+ // "Custom" initially selected.
+ assertEquals(dropdown.notFoundValue_,
+ getSelectable(dropdown).selected);
+ // Pref should not have changed.
+ assertEquals('f', dropdown.pref.value);
+ done();
+ });
+ });
+ });
+ }
+
+ return {
+ registerTests: registerTests,
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698