Index: chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js |
diff --git a/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..13169cb5e4df31dc08a82640e2bfb5218780d786 |
--- /dev/null |
+++ b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js |
@@ -0,0 +1,103 @@ |
+// Copyright 2017 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 cr_policy-pref-indicator. */ |
michaelpg
2017/02/16 21:36:22
cr-policy
stevenjb
2017/02/17 01:08:29
Done.
|
+suite('CrPolicyPrefIndicator', function() { |
+ /** @type {!CrPolicyPrefIndicatorElement|undefined} */ |
+ var indicator; |
+ |
+ /** @type {!PaperTooltipElement|undefined} */ |
+ var tooltip; |
+ |
+ suiteSetup(function() { |
+ // Define chrome.settingsPrivate enums, normally provided by chrome WebUI. |
+ // NOTE: These need to be kept in sync with settings_private.idl. |
+ |
+ chrome.settingsPrivate = chrome.settingsPrivate || {}; |
+ |
+ /** @enum {string} */ |
+ chrome.settingsPrivate.ControlledBy = { |
+ DEVICE_POLICY: 'DEVICE_POLICY', |
+ USER_POLICY: 'USER_POLICY', |
+ OWNER: 'OWNER', |
+ PRIMARY_USER: 'PRIMARY_USER', |
+ EXTENSION: 'EXTENSION', |
+ }; |
+ |
+ /** @enum {string} */ |
+ chrome.settingsPrivate.Enforcement = { |
+ ENFORCED: 'ENFORCED', |
+ RECOMMENDED: 'RECOMMENDED', |
+ }; |
+ |
+ /** @enum {string} */ |
+ chrome.settingsPrivate.PrefType = { |
+ BOOLEAN: 'BOOLEAN', |
+ NUMBER: 'NUMBER', |
+ STRING: 'STRING', |
+ URL: 'URL', |
+ LIST: 'LIST', |
+ DICTIONARY: 'DICTIONARY', |
+ }; |
+ |
+ // Set up strings used by policy indicator elements. |
michaelpg
2017/02/16 21:36:22
Given the comment about settings_private.idl, coul
stevenjb
2017/02/17 01:08:29
Done.
|
+ CrPolicyStrings = { |
+ controlledSettingPolicy: 'policy', |
+ controlledSettingRecommendedMatches: 'matches', |
+ controlledSettingRecommendedDiffers: 'differs', |
+ controlledSettingShared: 'shared: $1', |
+ controlledSettingOwner: 'owner: $1', |
+ }; |
+ }); |
+ |
+ setup(function() { |
+ PolymerTest.clearBody(); |
+ |
+ indicator = document.createElement('cr-policy-pref-indicator'); |
+ document.body.appendChild(indicator); |
+ tooltip = indicator.$$('paper-tooltip'); |
+ }); |
+ |
+ teardown(function() { |
+ PolymerTest.clearBody(); // crbug.com/680169 |
+ }); |
+ |
+ test('none', function() { |
+ assertTrue(indicator.$.indicator.hidden); |
+ }); |
+ |
+ test('pref', function() { |
+ /** @type {!chrome.settingsPrivate.PrefObject} */ |
+ indicator.pref = { |
+ key: 'foo', |
+ type: chrome.settingsPrivate.PrefType.BOOLEAN, |
+ value: false, |
+ }; |
+ Polymer.dom.flush(); |
+ assertTrue(indicator.$.indicator.hidden); |
+ |
+ indicator.set( |
+ 'pref.controlledBy', chrome.settingsPrivate.ControlledBy.OWNER); |
+ indicator.set('pref.controlledByName', 'owner_name'); |
+ indicator.set( |
+ 'pref.enforcement', chrome.settingsPrivate.Enforcement.ENFORCED); |
+ Polymer.dom.flush(); |
+ assertFalse(indicator.$.indicator.hidden); |
+ assertEquals('cr:person', indicator.$.indicator.icon); |
+ assertEquals('owner: owner_name', tooltip.textContent.trim()); |
+ |
+ indicator.set('pref.value', 'foo'); |
+ indicator.set('pref.recommendedValue', 'bar'); |
+ indicator.set( |
+ 'pref.enforcement', chrome.settingsPrivate.Enforcement.RECOMMENDED); |
+ Polymer.dom.flush(); |
+ assertFalse(indicator.$.indicator.hidden); |
+ assertEquals('cr20:domain', indicator.$.indicator.icon); |
+ assertEquals('differs', tooltip.textContent.trim()); |
+ |
+ indicator.set('pref.value', 'bar'); |
+ Polymer.dom.flush(); |
+ assertEquals('matches', tooltip.textContent.trim()); |
+ }); |
+}); |