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

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: rebase 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
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5dbdbf9edc17fc87f4addf50970beecb39d5bba6
--- /dev/null
+++ b/chrome/test/data/webui/settings/dropdown_menu_tests.js
@@ -0,0 +1,101 @@
+// 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'),
+ ]);
+ });
+
+ /** @type {SettingsDropdownMenu} */
+ var dropdown;
+
+ /**
+ * The IronSelectable (paper-menu) used internally by the dropdown menu.
+ * @type {Polymer.IronSelectableBehavior}
+ */
+ var selectable;
+
+ setup(function() {
+ PolymerTest.clearBody();
+ dropdown = document.createElement('settings-dropdown-menu');
+ selectable = dropdown.$$('paper-menu');
+ document.body.appendChild(dropdown);
+ });
+
+ test('with number options', function testNumberOptions() {
+ 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']];
+
+ // IronSelectable uses a DOM observer, which uses a debouncer.
+ Polymer.dom.flush();
+
+ // Initially selected item.
+ assertEquals('Option 100', selectable.selectedItem.textContent.trim());
+
+ // Selecting an item updates the pref.
+ selectable.selected = '200';
+ assertEquals(200, dropdown.pref.value);
+
+ // Updating the pref selects an item.
+ dropdown.set('pref.value', 400);
+ assertEquals('400', selectable.selected);
+ });
+
+ test('with string options', function testStringOptions() {
+ dropdown.pref = {
+ key: 'test.string',
+ type: chrome.settingsPrivate.PrefType.STRING,
+ value: 'c',
+ };
+ dropdown.menuOptions =
+ [['a', 'AAA'], ['b', 'BBB'], ['c', 'CCC'], ['d', 'DDD']];
+ Polymer.dom.flush();
+
+ // Initially selected item.
+ assertEquals('CCC', selectable.selectedItem.textContent.trim());
+
+ // Selecting an item updates the pref.
+ selectable.selected = 'a';
+ assertEquals('a', dropdown.pref.value);
+
+ // Updating the pref selects an item.
+ dropdown.set('pref.value', 'b');
+ assertEquals('b', selectable.selected);
+ });
+
+ test('with custom value', function testCustomValue() {
+ dropdown.pref = {
+ key: 'test.string',
+ type: chrome.settingsPrivate.PrefType.STRING,
+ value: 'f',
+ };
+ dropdown.menuOptions =
+ [['a', 'AAA'], ['b', 'BBB'], ['c', 'CCC'], ['d', 'DDD']];
+ Polymer.dom.flush();
+
+ // "Custom" initially selected.
+ assertEquals(dropdown.notFoundValue_, selectable.selected);
+ // Pref should not have changed.
+ assertEquals('f', dropdown.pref.value);
+ });
+ });
+ }
+
+ return {
+ registerTests: registerTests,
+ };
+});
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698