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.
5 #import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_never_save_view_controller.h"
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"
13 // Helper delegate for testing the never save view of the password management
15 @interface ManagePasswordsBubbleNeverSaveViewTestDelegate
16 : NSObject<ManagePasswordsBubbleNeverSaveViewDelegate> {
18 BOOL cancelledNeverSave_;
20 @property(readonly) BOOL dismissed;
21 @property(readonly) BOOL cancelledNeverSave;
24 @implementation ManagePasswordsBubbleNeverSaveViewTestDelegate
26 @synthesize dismissed = dismissed_;
27 @synthesize cancelledNeverSave = cancelledNeverSave_;
29 - (void)viewShouldDismiss {
33 - (void)neverSavePasswordCancelled {
34 cancelledNeverSave_ = YES;
41 // Tests for the never save view of the password management bubble.
42 class ManagePasswordsBubbleNeverSaveViewControllerTest
43 : public ManagePasswordsControllerTest {
45 ManagePasswordsBubbleNeverSaveViewControllerTest() : controller_(nil) {}
47 virtual void SetUp() override {
48 ManagePasswordsControllerTest::SetUp();
50 [[ManagePasswordsBubbleNeverSaveViewTestDelegate alloc] init]);
51 ui_controller()->SetState(password_manager::ui::PENDING_PASSWORD_STATE);
54 ManagePasswordsBubbleNeverSaveViewTestDelegate* delegate() {
55 return delegate_.get();
58 ManagePasswordsBubbleNeverSaveViewController* controller() {
60 controller_.reset([[ManagePasswordsBubbleNeverSaveViewController alloc]
62 delegate:delegate()]);
63 [controller_ loadView];
65 return controller_.get();
69 base::scoped_nsobject<ManagePasswordsBubbleNeverSaveViewController>
71 base::scoped_nsobject<ManagePasswordsBubbleNeverSaveViewTestDelegate>
75 TEST_F(ManagePasswordsBubbleNeverSaveViewControllerTest,
76 ShouldNotifyDelegateWhenUndoClicked) {
77 NSButton* undoButton = controller().undoButton;
78 [undoButton performClick:nil];
79 EXPECT_TRUE(delegate().cancelledNeverSave);
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());