Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / passwords / manage_passwords_bubble_never_save_view_controller_unittest.mm
1 // Copyright 2014 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.
4
5 #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.h"
6
7 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
8 #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.h"
9 #include "chrome/browser/ui/cocoa/passwords/manage_passwords_controller_test.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h"
11 #include "components/password_manager/core/common/password_manager_ui.h"
12
13 // Helper delegate for testing the never save view of the password management
14 // bubble.
15 @interface ManagePasswordsBubbleNeverSaveViewTestDelegate
16     : NSObject<ManagePasswordsBubbleNeverSaveViewDelegate> {
17   BOOL dismissed_;
18   BOOL cancelledNeverSave_;
19 }
20 @property(readonly) BOOL dismissed;
21 @property(readonly) BOOL cancelledNeverSave;
22 @end
23
24 @implementation ManagePasswordsBubbleNeverSaveViewTestDelegate
25
26 @synthesize dismissed = dismissed_;
27 @synthesize cancelledNeverSave = cancelledNeverSave_;
28
29 - (void)viewShouldDismiss {
30   dismissed_ = YES;
31 }
32
33 - (void)neverSavePasswordCancelled {
34   cancelledNeverSave_ = YES;
35 }
36
37 @end
38
39 namespace {
40
41 // Tests for the never save view of the password management bubble.
42 class ManagePasswordsBubbleNeverSaveViewControllerTest
43     : public ManagePasswordsControllerTest {
44  public:
45   ManagePasswordsBubbleNeverSaveViewControllerTest() : controller_(nil) {}
46
47   virtual void SetUp() override {
48     ManagePasswordsControllerTest::SetUp();
49     delegate_.reset(
50         [[ManagePasswordsBubbleNeverSaveViewTestDelegate alloc] init]);
51     ui_controller()->SetState(password_manager::ui::PENDING_PASSWORD_STATE);
52   }
53
54   ManagePasswordsBubbleNeverSaveViewTestDelegate* delegate() {
55     return delegate_.get();
56   }
57
58   ManagePasswordsBubbleNeverSaveViewController* controller() {
59     if (!controller_) {
60       controller_.reset([[ManagePasswordsBubbleNeverSaveViewController alloc]
61           initWithModel:model()
62                delegate:delegate()]);
63       [controller_ loadView];
64     }
65     return controller_.get();
66   }
67
68  private:
69   base::scoped_nsobject<ManagePasswordsBubbleNeverSaveViewController>
70       controller_;
71   base::scoped_nsobject<ManagePasswordsBubbleNeverSaveViewTestDelegate>
72       delegate_;
73 };
74
75 TEST_F(ManagePasswordsBubbleNeverSaveViewControllerTest,
76        ShouldNotifyDelegateWhenUndoClicked) {
77   NSButton* undoButton = controller().undoButton;
78   [undoButton performClick:nil];
79   EXPECT_TRUE(delegate().cancelledNeverSave);
80 }
81
82 TEST_F(ManagePasswordsBubbleNeverSaveViewControllerTest,
83        ShouldDismissAndNeverSaveWhenConfirmClicked) {
84   NSButton* confirmButton = controller().confirmButton;
85   [confirmButton performClick:nil];
86   EXPECT_TRUE(delegate().dismissed);
87   EXPECT_TRUE(ui_controller()->never_saved_password());
88 }
89
90 }  // namespace