Index: chrome/test/data/webui/settings/startup_urls_page_test.js |
diff --git a/chrome/test/data/webui/settings/startup_urls_page_test.js b/chrome/test/data/webui/settings/startup_urls_page_test.js |
index 1c4490aa0365a441bd5c69b0c48adbfddf5c8dd5..d9af34dba1112e2e88fa83dd2a8f705b4fa6ea5a 100644 |
--- a/chrome/test/data/webui/settings/startup_urls_page_test.js |
+++ b/chrome/test/data/webui/settings/startup_urls_page_test.js |
@@ -10,33 +10,104 @@ cr.define('settings_startup_urls_page', function() { |
*/ |
function TestStartupUrlsPageBrowserProxy() { |
settings.TestBrowserProxy.call(this, [ |
- 'validateStartupPage', |
'addStartupPage', |
+ 'loadStartupPages', |
+ 'useCurrentPages', |
+ 'validateStartupPage', |
]); |
+ |
+ /** @private {boolean} */ |
+ this.urlIsValid_ = true; |
} |
TestStartupUrlsPageBrowserProxy.prototype = { |
__proto__: settings.TestBrowserProxy.prototype, |
- urlsAreValid: false, |
+ /** @override */ |
+ validateStartupPage: function(url) { |
+ this.methodCalled('validateStartupPage', url); |
+ return Promise.resolve(this.urlIsValid_); |
+ }, |
/** @override */ |
- loadStartupPages: function() {}, |
+ loadStartupPages: function() { |
+ this.methodCalled('loadStartupPages'); |
+ }, |
+ |
+ /** @param {boolean} isValid */ |
+ setValidateStartupPage: function(isValid) { |
+ this.urlIsValid_ = isValid; |
+ }, |
/** @override */ |
- validateStartupPage: function(url) { |
- this.methodCalled('validateStartupPage'); |
- var resolver = new PromiseResolver; |
- resolver.promise = Promise.resolve(this.urlsAreValid); |
- return resolver; |
+ useCurrentPages: function() { |
+ this.methodCalled('useCurrentPages'); |
}, |
/** @override */ |
addStartupPage: function(url) { |
- this.methodCalled('addStartupPage'); |
+ this.methodCalled('addStartupPage', url); |
}, |
}; |
+ suite('StartupUrlDialog', function() { |
+ /** @type {?SettingsStartupUrlDialogElement} */ |
+ var dialog = null; |
+ |
+ var browserProxy = null; |
+ |
+ /** |
+ * Triggers an 'input' event on the given text input field, which triggers |
+ * validation to occur. |
+ * @param {!PaperInputElement} element |
+ */ |
+ function triggerInputEvent(element) { |
+ // The actual key code is irrelevant for these tests. |
+ MockInteractions.keyEventOn(element, 'input', 32 /* space key code */); |
+ } |
+ |
+ setup(function() { |
+ browserProxy = new TestStartupUrlsPageBrowserProxy(); |
+ settings.StartupUrlsPageBrowserProxyImpl.instance_ = browserProxy; |
+ PolymerTest.clearBody(); |
+ dialog = document.createElement('settings-startup-url-dialog'); |
+ document.body.appendChild(dialog); |
+ }); |
+ |
+ teardown(function() { dialog.remove(); }); |
+ |
+ test('Validation', function() { |
+ var addButton = dialog.$.add; |
+ assertTrue(!!addButton); |
+ assertTrue(addButton.disabled); |
+ |
+ var inputElement = dialog.$.url; |
+ assertTrue(!!inputElement); |
+ |
+ var expectedUrl = "dummy-foo.com"; |
+ inputElement.value = expectedUrl; |
+ browserProxy.setValidateStartupPage(false); |
+ triggerInputEvent(inputElement); |
+ |
+ return browserProxy.whenCalled('validateStartupPage').then(function(url) { |
+ assertEquals(expectedUrl, url); |
+ assertTrue(addButton.disabled); |
+ |
+ browserProxy.setValidateStartupPage(true); |
+ browserProxy.resetResolver('validateStartupPage'); |
+ triggerInputEvent(inputElement); |
+ |
+ return browserProxy.whenCalled('validateStartupPage'); |
+ }).then(function() { |
+ assertFalse(addButton.disabled); |
+ MockInteractions.tap(addButton); |
+ return browserProxy.whenCalled('addStartupPage'); |
+ }).then(function(url) { |
+ assertEquals(expectedUrl, url); |
+ }); |
+ }); |
+ }); |
+ |
suite('StartupUrlsPage', function() { |
/** @type {?SettingsStartupUrlsPageElement} */ |
var page = null; |
@@ -53,26 +124,26 @@ cr.define('settings_startup_urls_page', function() { |
teardown(function() { page.remove(); }); |
- test('validate', function() { |
- browserProxy.whenCalled('validateStartupPage').then(function() { |
- var addButton = page.$.add; |
- assertTrue(!!addButton); |
- assertFalse(browserProxy.urlsAreValid); |
- assertTrue(addButton.disabled); |
+ // Test that the page is requesting information from the browser. |
+ test('Initialization', function() { |
+ return browserProxy.whenCalled('loadStartupPages'); |
+ }); |
- browserProxy.resetResolver('validateStartupPage'); |
- browserProxy.whenCalled('validateStartupPage').then(function() { |
- page.async(function() { |
- assertFalse(addButton.disabled); |
- MockInteractions.tap(addButton); |
- }); |
- }); |
- |
- browserProxy.urlsAreValid = true; |
- page.$.newUrl.value = "overriding validation anyway"; |
- }); |
+ test('UseCurrentPages', function() { |
+ var useCurrentPagesButton = page.$.useCurrentPages; |
+ assertTrue(!!useCurrentPagesButton); |
+ MockInteractions.tap(useCurrentPagesButton); |
+ return browserProxy.whenCalled('useCurrentPages'); |
+ }); |
+ |
+ test('AddPage_OpensDialog', function() { |
+ var addPageButton = page.$.addPage; |
+ assertTrue(!!addPageButton); |
+ assertFalse(!!page.$$('settings-startup-url-dialog')); |
- return browserProxy.whenCalled('addStartupPage'); |
+ MockInteractions.tap(addPageButton); |
+ Polymer.dom.flush(); |
+ assertTrue(!!page.$$('settings-startup-url-dialog')); |
}); |
}); |
}); |