| Index: chrome/test/data/webui/settings/about_page_tests.js
|
| diff --git a/chrome/test/data/webui/settings/about_page_tests.js b/chrome/test/data/webui/settings/about_page_tests.js
|
| index 4e50c4f9afa7b895d3cc7c9068718cdf47e936bd..9af8d3bb1847d5cca831eaa18d143288db1e3d0e 100644
|
| --- a/chrome/test/data/webui/settings/about_page_tests.js
|
| +++ b/chrome/test/data/webui/settings/about_page_tests.js
|
| @@ -21,7 +21,8 @@ cr.define('settings_about_page', function() {
|
| 'getCurrentChannel',
|
| 'getTargetChannel',
|
| 'getVersionInfo',
|
| - 'getRegulatoryInfo');
|
| + 'getRegulatoryInfo',
|
| + 'setChannel');
|
| }
|
|
|
| settings.TestBrowserProxy.call(this, methodNames);
|
| @@ -125,6 +126,12 @@ cr.define('settings_about_page', function() {
|
| this.methodCalled('getRegulatoryInfo');
|
| return Promise.resolve(this.regulatoryInfo_);
|
| };
|
| +
|
| + /** @override */
|
| + TestAboutPageBrowserProxy.prototype.setChannel = function(
|
| + channel, isPowerwashAllowed) {
|
| + this.methodCalled('setChannel', [channel, isPowerwashAllowed]);
|
| + };
|
| }
|
|
|
|
|
| @@ -415,12 +422,119 @@ cr.define('settings_about_page', function() {
|
| });
|
| });
|
| }
|
| +
|
| + function registerChannelSwitcherDialogTests() {
|
| + /**
|
| + * Converts an event occurrence to a promise.
|
| + * @param {string} eventType
|
| + * @param {!HTMLElement} target
|
| + * @return {!Promise} A promise firing once the event occurs.
|
| + * TODO(dpapad); Share this code with certificate_manager_page_test.js
|
| + * identical helper method.
|
| + */
|
| + function eventToPromise(eventType, target) {
|
| + return new Promise(function(resolve, reject) {
|
| + target.addEventListener(eventType, resolve);
|
| + });
|
| + }
|
| +
|
| + suite('ChannelSwitcherDialogTest', function() {
|
| + var dialog = null;
|
| + var radioButtons = null;
|
| + var browserProxy = null;
|
| + var currentChannel = BrowserChannel.BETA;
|
| +
|
| + setup(function() {
|
| + browserProxy = new TestAboutPageBrowserProxy();
|
| + browserProxy.setChannels(currentChannel, currentChannel);
|
| + settings.AboutPageBrowserProxyImpl.instance_ = browserProxy;
|
| + PolymerTest.clearBody();
|
| + dialog = document.createElement('settings-channel-switcher-dialog');
|
| + document.body.appendChild(dialog);
|
| +
|
| + radioButtons = dialog.shadowRoot.querySelectorAll(
|
| + 'paper-radio-button');
|
| + assertEquals(3, radioButtons.length);
|
| + return browserProxy.whenCalled('getCurrentChannel');
|
| + });
|
| +
|
| + teardown(function() { dialog.remove(); });
|
| +
|
| + test('Initialization', function() {
|
| + var radioGroup = dialog.$$('paper-radio-group');
|
| + assertTrue(!!radioGroup);
|
| + assertTrue(!!dialog.$.warning);
|
| + assertTrue(!!dialog.$.changeChannel);
|
| + assertTrue(!!dialog.$.changeChannelAndPowerwash);
|
| +
|
| + // Check that upon initialization the radio button corresponding to
|
| + // the current release channel is pre-selected.
|
| + assertEquals(currentChannel, radioGroup.selected);
|
| + assertTrue(dialog.$.warning.hidden);
|
| +
|
| + // Check that action buttons are hidden when current and target
|
| + // channel are the same.
|
| + assertTrue(dialog.$.changeChannel.hidden);
|
| + assertTrue(dialog.$.changeChannelAndPowerwash.hidden);
|
| + });
|
| +
|
| + // Test case where user switches to a less stable channel.
|
| + test('ChangeChannel_LessStable', function() {
|
| + assertEquals(BrowserChannel.DEV, radioButtons.item(2).name);
|
| + MockInteractions.tap(radioButtons.item(2));
|
| + Polymer.dom.flush();
|
| +
|
| + assertFalse(dialog.$.warning.hidden);
|
| + // Check that only the "Change channel" button becomes visible.
|
| + assertTrue(dialog.$.changeChannelAndPowerwash.hidden);
|
| + assertFalse(dialog.$.changeChannel.hidden);
|
| +
|
| + var whenTargetChannelChangedFired = eventToPromise(
|
| + 'target-channel-changed', dialog);
|
| +
|
| + MockInteractions.tap(dialog.$.changeChannel);
|
| + return browserProxy.whenCalled('setChannel').then(function(args) {
|
| + assertEquals(BrowserChannel.DEV, args[0]);
|
| + assertFalse(args[1]);
|
| + return whenTargetChannelChangedFired;
|
| + }).then(function(event) {
|
| + assertEquals(BrowserChannel.DEV, event.detail);
|
| + });
|
| + });
|
| +
|
| + // Test case where user switches to a more stable channel.
|
| + test('ChangeChannel_MoreStable', function() {
|
| + assertEquals(BrowserChannel.STABLE, radioButtons.item(0).name);
|
| + MockInteractions.tap(radioButtons.item(0));
|
| + Polymer.dom.flush();
|
| +
|
| + assertFalse(dialog.$.warning.hidden);
|
| + // Check that only the "Change channel and Powerwash" button becomes
|
| + // visible.
|
| + assertFalse(dialog.$.changeChannelAndPowerwash.hidden);
|
| + assertTrue(dialog.$.changeChannel.hidden);
|
| +
|
| + var whenTargetChannelChangedFired = eventToPromise(
|
| + 'target-channel-changed', dialog);
|
| +
|
| + MockInteractions.tap(dialog.$.changeChannelAndPowerwash);
|
| + return browserProxy.whenCalled('setChannel').then(function(args) {
|
| + assertEquals(BrowserChannel.STABLE, args[0]);
|
| + assertTrue(args[1]);
|
| + return whenTargetChannelChangedFired;
|
| + }).then(function(event) {
|
| + assertEquals(BrowserChannel.STABLE, event.detail);
|
| + });
|
| + });
|
| + });
|
| + }
|
| }
|
|
|
| return {
|
| registerTests: function() {
|
| if (cr.isChromeOS) {
|
| registerDetailedBuildInfoTests();
|
| + registerChannelSwitcherDialogTests();
|
| }
|
| registerAboutPageTests();
|
| },
|
|
|