Index: chrome/browser/ui/webui/sync_setup_browsertest.js |
diff --git a/chrome/browser/ui/webui/sync_setup_browsertest.js b/chrome/browser/ui/webui/sync_setup_browsertest.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e828a527087aa043d115f5d3334392d459d3eafe |
--- /dev/null |
+++ b/chrome/browser/ui/webui/sync_setup_browsertest.js |
@@ -0,0 +1,117 @@ |
+// Copyright (c) 2011 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. |
+ |
+// TODO(scr) remove this debugging tool. |
Sheridan Rawlins
2011/11/08 06:58:14
I plan on removing this before commit, but it is u
|
+var runMessageLoop = false; |
+if (runMessageLoop) |
+ GEN('#include "chrome/test/base/ui_test_utils.h"'); |
+ |
+/** |
+ * Test fixture for sync setup WebUI testing. |
+ * @constructor |
+ * @extends {testing.Test} |
+ */ |
+function SyncSetupWebUITest() {} |
+ |
+SyncSetupWebUITest.prototype = { |
+ __proto__: testing.Test.prototype, |
+ |
+ /** |
+ * Browse to personal options. |
+ **/ |
+ browsePreload: 'chrome://settings/personal', |
+ |
+ /** @inheritDoc */ |
+ preLoad: function() { |
+ |
James Hawkins
2011/11/08 17:08:37
Inconsistency: Blank line at beginning of method b
Sheridan Rawlins
2011/11/08 21:32:04
Done.
|
+ function MockSyncSetupHandler() {} |
+ |
+ MockSyncSetupHandler.prototype = { |
+ stopSyncing: function() {}, |
+ SyncSetupDidClosePage: function() {}, |
+ SyncSetupSubmitAuth: function() {}, |
+ SyncSetupConfigure: function() {}, |
+ SyncSetupPassphrase: function() {}, |
+ SyncSetupPassphraseCancel: function() {}, |
+ SyncSetupAttachHandler: function() {}, |
+ SyncSetupShowErrorUI: function() {}, |
+ SyncSetupShowSetupUI: function() {}, |
Dan Beam
2011/11/08 21:54:48
Do we do this alot? Seems like we would. If we d
Sheridan Rawlins
2011/11/09 02:44:22
Thanks - cool suggestion to make it easier (& memo
|
+ }; |
+ var mockHandler = this.mockHandler = mock(MockSyncSetupHandler); |
James Hawkins
2011/11/08 17:08:37
What's with this construct?
var mockHandler = thi
Sheridan Rawlins
2011/11/08 21:32:04
It's useful in other tests which set up several st
|
+ |
+ // Register mock as a handler of the chrome.send messages. |
+ registerMockMessageCallbacks(mockHandler, MockSyncSetupHandler); |
+ }, |
+ |
+ /** |
+ * Debugging tool to see what's going on. |
+ * TODO(scr) remove this code. |
+ */ |
+ testGenPostamble: function() { |
+ if (runMessageLoop) |
+ GEN('ui_test_utils::RunMessageLoop();'); |
+ }, |
+ |
+ /** |
+ * Verify starting point is not synced. |
+ */ |
+ verifyUnsynced: function() { |
+ var customizeSyncButton = $('customize-sync'); |
+ assertNotEquals(null, customizeSyncButton); |
+ assertTrue(customizeSyncButton.hidden); |
James Hawkins
2011/11/08 17:08:37
Testing wether elemenets are hidden or not (i.e.,
Sheridan Rawlins
2011/11/08 21:32:04
How 'bout checking syncSetupCompleted is false?
D
|
+ }, |
+ |
+ /** |
+ * Click the "Sign in to Chrome" button. |
+ */ |
+ startSyncing: function() { |
+ var startStopSyncButton = $('start-stop-sync'); |
James Hawkins
2011/11/08 17:08:37
I'm also hesitant to have tests reference element
Sheridan Rawlins
2011/11/08 21:32:04
Done.
|
+ assertNotEquals(null, startStopSyncButton); |
+ this.mockHandler.expects(once()).SyncSetupShowSetupUI(). |
+ will(callFunction(function() { |
+ OptionsPage.navigateToPage('syncSetup'); |
+ })); |
+ |
+ this.mockHandler.expects(once()).SyncSetupAttachHandler(). |
+ will(callFunction(function() { |
+ SyncSetupOverlay.showSyncSetupPage( |
+ 'login', { |
+ user: '', |
+ error: 0, |
+ editable_user: true, |
+ }); |
+ })); |
+ startStopSyncButton.click(); |
+ }, |
+ |
+ gaiaLogin: function() { |
+ // Find the DOM objects on the page. |
+ var gaiaEmail = $('gaia-email'); |
+ assertNotEquals(null, gaiaEmail); |
+ var gaiaPasswd = $('gaia-passwd'); |
+ assertNotEquals(null, gaiaPasswd); |
+ var signIn = $('sign-in'); |
+ assertNotEquals(null, signIn); |
+ |
+ // Set up mock expectations |
+ this.mockHandler.expects(once()).SyncSetupSubmitAuth(NOT_NULL). |
+ will(callFunction(function() { |
+ SyncSetupOverlay.showSuccessAndClose(); |
+ })); |
+ this.mockHandler.expects(once()).SyncSetupDidClosePage(); |
+ |
+ // set the email & password, then sign in. |
+ gaiaEmail.value = 'foo@bar.baz'; |
+ gaiaPasswd.value = 'foo@bar.baz'; |
+ signIn.click(); |
+ }, |
+}; |
+ |
+// Verify that initial state is unsynced, start syncing, then login. |
+TEST_F('SyncSetupWebUITest', 'VerifySignIn', function() { |
+ this.verifyUnsynced(); |
+ this.startSyncing(); |
+ this.gaiaLogin(); |
+}); |
+ |