Chromium Code Reviews| 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 9a7fb7bcfd1e54271be57dc8c688249d12c06bc7..8281b2fd01aafaf5110cf51de5382f39890fa8cc 100644 |
| --- a/chrome/test/data/webui/settings/about_page_tests.js |
| +++ b/chrome/test/data/webui/settings/about_page_tests.js |
| @@ -25,6 +25,17 @@ cr.define('settings_about_page', function() { |
| osFirmware: '', |
| osVersion: '', |
| }; |
| + |
| + /** @private {!UpdateStatus} */ |
| + this.updateStatus_ = UpdateStatus.UPDATED; |
| + |
| + if (cr.isChromeOS) { |
| + /** @private {!BrowserChannel} */ |
| + this.currentChannel_ = BrowserChannel.BETA; |
| + |
| + /** @private {!BrowserChannel} */ |
| + this.targetChannel_ = BrowserChannel.BETA; |
| + } |
| }; |
| TestAboutPageBrowserProxy.prototype = { |
| @@ -35,6 +46,11 @@ cr.define('settings_about_page', function() { |
| this.versionInfo_ = versionInfo; |
| }, |
| + /** @param {!UpdateStatus} updateStatus */ |
| + setUpdateStatus: function(updateStatus) { |
| + this.updateStatus_ = updateStatus; |
| + }, |
| + |
| /** @override */ |
| pageReady: function() { |
| this.methodCalled('pageReady'); |
| @@ -42,39 +58,58 @@ cr.define('settings_about_page', function() { |
| /** @override */ |
| refreshUpdateStatus: function() { |
| + cr.webUIListenerCallback( |
| + 'update-status-changed', {status: this.updateStatus_}); |
| this.methodCalled('refreshUpdateStatus'); |
| }, |
| /** @override */ |
| - getCurrentChannel: function() { |
| - this.methodCalled('getCurrentChannel'); |
| - return Promise.resolve(BrowserChannel.BETA); |
| + openFeedbackDialog: function() { |
| + this.methodCalled('openFeedbackDialog'); |
| }, |
| /** @override */ |
| - getTargetChannel: function() { |
| - this.methodCalled('getTargetChannel'); |
| - return Promise.resolve(BrowserChannel.BETA); |
| + openHelpPage: function() { |
| + this.methodCalled('openHelpPage'); |
| }, |
| + }; |
| + |
| + if (cr.isChromeOS) { |
| + /** |
| + * @param {!BrowserChannel} current |
| + * @param {!BrowserChannel} target |
| + */ |
| + TestAboutPageBrowserProxy.prototype.setChannels = function( |
| + current, target) { |
| + this.currentChannel_ = current; |
| + this.targetChannel_ = target; |
| + }; |
| /** @override */ |
| - getVersionInfo: function() { |
| - this.methodCalled('getVersionInfo'); |
| - return Promise.resolve(this.versionInfo_); |
| - }, |
| + TestAboutPageBrowserProxy.prototype.getCurrentChannel = function() { |
| + this.methodCalled('getCurrentChannel'); |
| + return Promise.resolve(this.currentChannel_); |
| + }; |
| /** @override */ |
| - openFeedbackDialog: function() { |
| - this.methodCalled('openFeedbackDialog'); |
| - }, |
| + TestAboutPageBrowserProxy.prototype.getTargetChannel = function() { |
| + this.methodCalled('getTargetChannel'); |
| + return Promise.resolve(this.targetChannel_); |
| + }; |
| /** @override */ |
| - openHelpPage: function() { |
| - this.methodCalled('openHelpPage'); |
| - }, |
| - }; |
| + TestAboutPageBrowserProxy.prototype.getVersionInfo = function() { |
| + this.methodCalled('getVersionInfo'); |
| + return Promise.resolve(this.versionInfo_); |
| + }; |
| + } |
| + |
| function registerAboutPageTests() { |
| + function fireStatusChanged(status) { |
| + cr.webUIListenerCallback('update-status-changed', {status: status}); |
| + } |
| + |
| suite('AboutPageTest', function() { |
| var page = null; |
| var browserProxy = null; |
| @@ -82,28 +117,26 @@ cr.define('settings_about_page', function() { |
| setup(function() { |
| browserProxy = new TestAboutPageBrowserProxy(); |
| settings.AboutPageBrowserProxyImpl.instance_ = browserProxy; |
| + return initNewPage(); |
| + }); |
| + |
| + function initNewPage() { |
|
tommycli
2016/05/20 22:53:18
I assume you have to re-init the page because the
dpapad
2016/05/20 23:25:35
Right, so far the channel is only queried when pag
|
| + browserProxy.resetResolver('refreshUpdateStatus'); |
| PolymerTest.clearBody(); |
| page = document.createElement('settings-about-page'); |
| document.body.appendChild(page); |
| return browserProxy.whenCalled('refreshUpdateStatus'); |
| - }); |
| + } |
| /** |
| * Test that the status icon updates according to incoming |
| - * 'update-status-chanhed' events. |
| + * 'update-status-changed' events. |
| */ |
| test('IconUpdates', function() { |
| - function fireStatusChanged(status) { |
| - cr.webUIListenerCallback('update-status-changed', { |
| - status: status, message: '', progress: 0, |
| - }); |
| - } |
| - |
| var SPINNER_ICON = 'chrome://resources/images/throbber_small.svg'; |
| var icon = page.$$('iron-icon'); |
| assertTrue(!!icon); |
| - assertEquals(null, icon.getAttribute('icon')); |
| fireStatusChanged(UpdateStatus.CHECKING); |
| assertEquals(SPINNER_ICON, icon.src); |
| @@ -134,6 +167,127 @@ cr.define('settings_about_page', function() { |
| assertEquals(null, icon.getAttribute('icon')); |
| }); |
| + if (cr.isChromeOS) { |
| + /** |
| + * Test that all buttons update according to incoming |
| + * 'update-status-changed' events for the case where target and current |
| + * channel are the same. |
| + */ |
| + test('ButtonsUpdate_SameChannel', function() { |
| + var relaunch = page.$.relaunch; |
| + var checkForUpdates = page.$.checkForUpdates; |
| + var relaunchAndPowerwash = page.$.relaunchAndPowerwash; |
| + |
| + assertTrue(!!relaunch); |
| + assertTrue(!!relaunchAndPowerwash); |
| + assertTrue(!!checkForUpdates); |
| + |
| + function assertAllHidden() { |
| + assertTrue(checkForUpdates.hidden); |
| + assertTrue(relaunch.hidden); |
| + assertTrue(relaunchAndPowerwash.hidden); |
| + } |
| + |
| + // Check that |UPDATED| status is ignored if the user has not |
| + // explicitly checked for updates yet. |
| + fireStatusChanged(UpdateStatus.UPDATED); |
| + assertFalse(checkForUpdates.hidden); |
| + assertTrue(relaunch.hidden); |
| + assertTrue(relaunchAndPowerwash.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.CHECKING); |
| + assertAllHidden(); |
| + |
| + fireStatusChanged(UpdateStatus.UPDATING); |
| + assertAllHidden(); |
| + |
| + fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| + assertTrue(checkForUpdates.hidden); |
| + assertFalse(relaunch.hidden); |
| + assertTrue(relaunchAndPowerwash.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.UPDATED); |
| + assertAllHidden(); |
| + |
| + fireStatusChanged(UpdateStatus.FAILED); |
| + assertFalse(checkForUpdates.hidden); |
| + assertTrue(relaunch.hidden); |
| + assertTrue(relaunchAndPowerwash.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.DISABLED); |
| + assertAllHidden(); |
| + |
| + fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
| + assertAllHidden(); |
| + }); |
| + |
| + /** |
| + * Test that buttons update according to incoming |
| + * 'update-status-changed' events for the case where the target channel |
| + * is more stable than current channel. |
| + */ |
| + test('ButtonsUpdate_BetaToStable', function() { |
| + browserProxy.setChannels(BrowserChannel.BETA, BrowserChannel.STABLE); |
| + browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
| + |
| + return initNewPage().then(function() { |
| + assertTrue(!!page.$.relaunch); |
| + assertTrue(!!page.$.relaunchAndPowerwash); |
| + |
| + assertTrue(page.$.relaunch.hidden); |
| + assertFalse(page.$.relaunchAndPowerwash.hidden); |
| + }); |
| + }); |
| + |
| + /** |
| + * Test that buttons update according to incoming |
| + * 'update-status-changed' events for the case where the target channel |
| + * is less stable than current channel. |
| + */ |
| + test('ButtonsUpdate_StableToBeta', function() { |
| + browserProxy.setChannels(BrowserChannel.STABLE, BrowserChannel.BETA); |
| + browserProxy.setUpdateStatus(UpdateStatus.NEARLY_UPDATED); |
| + |
| + return initNewPage().then(function() { |
| + assertTrue(!!page.$.relaunch); |
| + assertTrue(!!page.$.relaunchAndPowerwash); |
| + |
| + assertFalse(page.$.relaunch.hidden); |
| + assertTrue(page.$.relaunchAndPowerwash.hidden); |
| + }); |
| + }); |
| + } else { |
|
tommycli
2016/05/20 22:53:19
Nit: since this is so far down, would it be more r
dpapad
2016/05/20 23:25:35
Done.
|
| + /* |
| + * Test that the "Check for updates" button updates according to |
| + * incoming 'update-status-changed' events. |
| + */ |
| + test('ButtonsUpdate', function() { |
| + var relaunch = page.$.relaunch; |
| + assertTrue(!!relaunch); |
| + |
| + fireStatusChanged(UpdateStatus.CHECKING); |
| + assertTrue(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.UPDATING); |
| + assertTrue(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.NEARLY_UPDATED); |
| + assertFalse(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.UPDATED); |
| + assertTrue(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.FAILED); |
| + assertTrue(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.DISABLED); |
| + assertTrue(relaunch.hidden); |
| + |
| + fireStatusChanged(UpdateStatus.DISABLED_BY_ADMIN); |
| + assertTrue(relaunch.hidden); |
| + }); |
| + } |
| + |
| test('GetHelp', function() { |
| assertTrue(!!page.$.help); |
| MockInteractions.tap(page.$.help); |
| @@ -204,9 +358,9 @@ cr.define('settings_about_page', function() { |
| return { |
| registerTests: function() { |
| - if (cr.isChromeOS) { |
| + /*if (cr.isChromeOS) { |
| registerDetailedBuildInfoTests(); |
| - } |
| + }*/ |
| registerAboutPageTests(); |
| }, |
| registerOfficialBuildTests: registerOfficialBuildTests, |