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

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: Fixing Louis' comments 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:SigninPromoViewColdStateMode]);
39 image_view_profile_image_ = nil;
40 primary_button_title_ = nil;
41 OCMExpect([primary_button_ setTitle:[OCMArg checkWithBlock:^BOOL(id value) {
42 primary_button_title_ = value;
43 return YES;
44 }]
45 forState:UIControlStateNormal]);
46 secondary_button_title_ = nil;
47 }
48
49 void CheckColdStateConfiguration() {
50 EXPECT_EQ(nil, image_view_profile_image_);
51 EXPECT_NE(nil, primary_button_title_);
52 EXPECT_EQ(nil, secondary_button_title_);
53 }
54
55 void ExpectWarmStateConfiguration() {
56 OCMExpect([signin_promo_view_ setMode:SigninPromoViewWarmStateMode]);
57 OCMExpect([signin_promo_view_
58 setProfileImage:[OCMArg checkWithBlock:^BOOL(id value) {
59 image_view_profile_image_ = value;
60 return YES;
61 }]]);
62 primary_button_title_ = nil;
63 OCMExpect([primary_button_ setTitle:[OCMArg checkWithBlock:^BOOL(id value) {
64 primary_button_title_ = value;
65 return YES;
66 }]
67 forState:UIControlStateNormal]);
68 secondary_button_title_ = nil;
69 OCMExpect([secondary_button_
70 setTitle:[OCMArg checkWithBlock:^BOOL(id value) {
71 secondary_button_title_ = value;
72 return YES;
73 }]
74 forState:UIControlStateNormal]);
75 }
76
77 void CheckWarmStateConfiguration() {
78 EXPECT_NE(nil, image_view_profile_image_);
79 NSRange profileNameRange =
80 [primary_button_title_ rangeOfString:mediator_.userFullName];
81 EXPECT_NE(profileNameRange.length, 0u);
82 NSRange profileEmailRange =
83 [secondary_button_title_ rangeOfString:mediator_.userEmail];
84 EXPECT_NE(profileEmailRange.length, 0u);
85 }
86
87 // Mediator used for the tests.
88 SigninPromoViewMediator* mediator_;
89
90 // Mocks.
91 SigninPromoView* signin_promo_view_;
92 MDCFlatButton* primary_button_;
93 MDCFlatButton* secondary_button_;
94
95 // Value set by -[SigninPromoView setProfileImage:].
96 UIImage* image_view_profile_image_;
97 // Value set by -[primary_button_ setTitle: forState:UIControlStateNormal].
98 NSString* primary_button_title_;
99 // Value set by -[secondary_button_ setTitle: forState:UIControlStateNormal].
100 NSString* secondary_button_title_;
101 };
102
103 TEST_F(SigninPromoViewMediatorTest, ColdStateConfigureSigninPromoView) {
104 EXPECT_EQ(nil, mediator_.userFullName);
105 EXPECT_EQ(nil, mediator_.userEmail);
106 EXPECT_EQ(nil, mediator_.userImage);
107
108 ExpectColdStateConfiguration();
109 [mediator_ configureSigninPromoView:signin_promo_view_];
110 CheckColdStateConfiguration();
111 }
112
113 TEST_F(SigninPromoViewMediatorTest,
114 WarmStateConfigureSigninPromoViewWithoutImage) {
115 mediator_.userFullName = @"John Doe";
116 mediator_.userEmail = @"johndoe@example.com";
117
118 ExpectWarmStateConfiguration();
119 [mediator_ configureSigninPromoView:signin_promo_view_];
120 CheckWarmStateConfiguration();
121 }
122
123 TEST_F(SigninPromoViewMediatorTest,
124 WarmStateConfigureSigninPromoViewWithImage) {
125 mediator_.userFullName = @"John Doe";
126 mediator_.userEmail = @"johndoe@example.com";
127 mediator_.userImage = [[UIImage alloc] init];
128
129 ExpectWarmStateConfiguration();
130 [mediator_ configureSigninPromoView:signin_promo_view_];
131 CheckWarmStateConfiguration();
132 EXPECT_EQ(mediator_.userImage, image_view_profile_image_);
133 }
134
135 // Cold state configuration and then warm state configuration.
136 TEST_F(SigninPromoViewMediatorTest, TwoConfigureSigninPromoView) {
137 ExpectColdStateConfiguration();
138 [mediator_ configureSigninPromoView:signin_promo_view_];
139 CheckColdStateConfiguration();
140
141 mediator_.userFullName = @"John Doe";
142 mediator_.userEmail = @"johndoe@example.com";
143
144 ExpectWarmStateConfiguration();
145 [mediator_ configureSigninPromoView:signin_promo_view_];
146 CheckWarmStateConfiguration();
147 }
148
149 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698