1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "chrome/browser/ui/cocoa/one_click_signin_bubble_controller.h"
7 #import <Cocoa/Cocoa.h>
10 #include "base/compiler_specific.h"
11 #import "base/mac/scoped_nsobject.h"
12 #include "base/memory/weak_ptr.h"
13 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h"
14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
15 #import "chrome/browser/ui/cocoa/one_click_signin_view_controller.h"
16 #include "chrome/browser/ui/sync/one_click_signin_sync_starter.h"
17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19 #import "testing/gtest_mac.h"
25 class OneClickSigninBubbleControllerTest : public CocoaProfileTest {
27 OneClickSigninBubbleControllerTest()
28 : weak_ptr_factory_(this),
30 base::Bind(&OneClickSigninBubbleControllerTest::OnStartSync,
31 weak_ptr_factory_.GetWeakPtr())) {}
33 virtual void SetUp() OVERRIDE {
34 CocoaProfileTest::SetUp();
35 BrowserWindowCocoa* browser_window =
36 static_cast<BrowserWindowCocoa*>(browser()->window());
37 controller_.reset([[OneClickSigninBubbleController alloc]
38 initWithBrowserWindowController:browser_window->cocoa_controller()
41 callback:start_sync_callback_]);
42 [controller_ showWindow:nil];
43 EXPECT_NSEQ(@"OneClickSigninBubble",
44 [[controller_ viewController] nibName]);
47 virtual void TearDown() OVERRIDE {
49 CocoaProfileTest::TearDown();
52 MOCK_METHOD1(OnStartSync, void(OneClickSigninSyncStarter::StartSyncMode));
55 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_;
56 BrowserWindow::StartSyncCallback start_sync_callback_;
57 base::scoped_nsobject<OneClickSigninBubbleController> controller_;
60 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleControllerTest);
63 // Test that the bubble does not sync if the OK button is clicked.
64 TEST_F(OneClickSigninBubbleControllerTest, OK) {
65 EXPECT_CALL(*this, OnStartSync(
66 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS)).Times(0);
67 [[controller_ viewController] ok:nil];
70 // Test that the bubble does not sync if the Undo button
71 // is clicked. Callback should be called to abort the sync.
72 TEST_F(OneClickSigninBubbleControllerTest, Undo) {
73 EXPECT_CALL(*this, OnStartSync(
74 OneClickSigninSyncStarter::UNDO_SYNC)).Times(0);
75 [[controller_ viewController] onClickUndo:nil];
78 // Test that the bubble does not sync if the bubble is closed.
79 TEST_F(OneClickSigninBubbleControllerTest, Close) {
80 EXPECT_CALL(*this, OnStartSync(
81 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS)).Times(0);