Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(703)

Side by Side Diff: ios/chrome/browser/ui/authentication/signin_promo_view_mediator_unittest.mm

Issue 2749703003: Adding mediator for Sign-in promo (Closed)
Patch Set: Update tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 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 "ios/chrome/browser/ui/authentication/signin_promo_view_mediator.h"
6
7 #import "ios/third_party/material_components_ios/src/components/Buttons/src/Mate rialButtons.h"
8 #import "testing/platform_test.h"
9 #import "third_party/ocmock/OCMock/OCMock.h"
10 #include "third_party/ocmock/gtest_support.h"
11
12 #if !defined(__has_feature) || !__has_feature(objc_arc)
13 #error "This file requires ARC support."
14 #endif
15
16 namespace {
17
18 class SigninPromoViewMediatorTest : public PlatformTest {
19 protected:
20 void SetUp() override {
21 mediator_ = [[SigninPromoViewMediator alloc] init];
22
23 signin_promo_view_ = OCMStrictClassMock([SigninPromoView class]);
24 primary_button_ = OCMStrictClassMock([MDCFlatButton class]);
25 OCMStub([signin_promo_view_ primaryButton]).andReturn(primary_button_);
26 secondary_button_ = OCMStrictClassMock([MDCFlatButton class]);
27 OCMStub([signin_promo_view_ secondaryButton]).andReturn(secondary_button_);
28 }
29
30 void TearDown() override {
31 mediator_ = nil;
32 EXPECT_OCMOCK_VERIFY((id)signin_promo_view_);
33 EXPECT_OCMOCK_VERIFY((id)primary_button_);
34 EXPECT_OCMOCK_VERIFY((id)secondary_button_);
35 }
36
37 void ExpectColdStateConfiguration() {
38 OCMExpect([signin_promo_view_ setMode:SigninPromoViewModeColdState]);
39 image_view_profile_image_ = nil;
40 primary_button_title_ = nil;
41 secondary_button_title_ = nil;
42 }
43
44 void CheckColdStateConfiguration() {
45 EXPECT_EQ(nil, image_view_profile_image_);
46 EXPECT_EQ(nil, primary_button_title_);
47 EXPECT_EQ(nil, secondary_button_title_);
48 }
49
50 void ExpectWarmStateConfiguration() {
51 OCMExpect([signin_promo_view_ setMode:SigninPromoViewModeWarmState]);
52 OCMExpect([signin_promo_view_
53 setProfileImage:[OCMArg checkWithBlock:^BOOL(id value) {
54 image_view_profile_image_ = value;
55 return YES;
56 }]]);
57 primary_button_title_ = nil;
58 OCMExpect([primary_button_ setTitle:[OCMArg checkWithBlock:^BOOL(id value) {
59 primary_button_title_ = value;
60 return YES;
61 }]
62 forState:UIControlStateNormal]);
63 secondary_button_title_ = nil;
64 OCMExpect([secondary_button_
65 setTitle:[OCMArg checkWithBlock:^BOOL(id value) {
66 secondary_button_title_ = value;
67 return YES;
68 }]
69 forState:UIControlStateNormal]);
70 }
71
72 void CheckWarmStateConfiguration() {
73 EXPECT_NE(nil, image_view_profile_image_);
74 NSRange profileNameRange =
75 [primary_button_title_ rangeOfString:mediator_.userFullName];
76 EXPECT_NE(profileNameRange.length, 0u);
77 NSRange profileEmailRange =
78 [secondary_button_title_ rangeOfString:mediator_.userEmail];
79 EXPECT_NE(profileEmailRange.length, 0u);
80 }
81
82 // Mediator used for the tests.
83 SigninPromoViewMediator* mediator_;
84
85 // Mocks.
86 SigninPromoView* signin_promo_view_;
87 MDCFlatButton* primary_button_;
88 MDCFlatButton* secondary_button_;
89
90 // Value set by -[SigninPromoView setProfileImage:].
91 UIImage* image_view_profile_image_;
92 // Value set by -[primary_button_ setTitle: forState:UIControlStateNormal].
93 NSString* primary_button_title_;
94 // Value set by -[secondary_button_ setTitle: forState:UIControlStateNormal].
95 NSString* secondary_button_title_;
96 };
97
98 TEST_F(SigninPromoViewMediatorTest, ColdStateConfigureSigninPromoView) {
99 EXPECT_EQ(nil, mediator_.userFullName);
100 EXPECT_EQ(nil, mediator_.userEmail);
101 EXPECT_EQ(nil, mediator_.userImage);
102
103 ExpectColdStateConfiguration();
104 [mediator_ configureSigninPromoView:signin_promo_view_];
105 CheckColdStateConfiguration();
106 }
107
108 TEST_F(SigninPromoViewMediatorTest,
109 WarmStateConfigureSigninPromoViewWithoutImage) {
110 mediator_.userFullName = @"John Doe";
111 mediator_.userEmail = @"johndoe@example.com";
112
113 ExpectWarmStateConfiguration();
114 [mediator_ configureSigninPromoView:signin_promo_view_];
115 CheckWarmStateConfiguration();
116 }
117
118 TEST_F(SigninPromoViewMediatorTest,
119 WarmStateConfigureSigninPromoViewWithImage) {
120 mediator_.userFullName = @"John Doe";
121 mediator_.userEmail = @"johndoe@example.com";
122 mediator_.userImage = [[UIImage alloc] init];
123
124 ExpectWarmStateConfiguration();
125 [mediator_ configureSigninPromoView:signin_promo_view_];
126 CheckWarmStateConfiguration();
127 EXPECT_EQ(mediator_.userImage, image_view_profile_image_);
128 }
129
130 // Cold state configuration and then warm state configuration.
131 TEST_F(SigninPromoViewMediatorTest, TwoConfigureSigninPromoView) {
132 ExpectColdStateConfiguration();
133 [mediator_ configureSigninPromoView:signin_promo_view_];
134 CheckColdStateConfiguration();
135
136 mediator_.userFullName = @"John Doe";
137 mediator_.userEmail = @"johndoe@example.com";
138
139 ExpectWarmStateConfiguration();
140 [mediator_ configureSigninPromoView:signin_promo_view_];
141 CheckWarmStateConfiguration();
142 }
143
144 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698