OLD | NEW |
---|---|
(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/payments/payment_request_mediator.h" | |
6 | |
7 #import <Foundation/Foundation.h> | |
8 | |
9 #include "base/mac/foundation_util.h" | |
10 #include "base/memory/ptr_util.h" | |
11 #include "base/strings/utf_string_conversions.h" | |
12 #include "components/autofill/core/browser/autofill_profile.h" | |
13 #include "components/autofill/core/browser/autofill_test_utils.h" | |
14 #include "components/autofill/core/browser/credit_card.h" | |
15 #include "components/autofill/core/browser/test_personal_data_manager.h" | |
16 #include "components/payments/core/strings_util.h" | |
17 #include "components/signin/core/browser/signin_manager.h" | |
18 #include "components/strings/grit/components_strings.h" | |
19 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" | |
20 #include "ios/chrome/browser/payments/payment_request_test_util.h" | |
21 #include "ios/chrome/browser/payments/payment_request_util.h" | |
22 #include "ios/chrome/browser/payments/test_payment_request.h" | |
23 #include "ios/chrome/browser/signin/fake_signin_manager_builder.h" | |
24 #include "ios/chrome/browser/signin/signin_manager_factory.h" | |
25 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item .h" | |
26 #import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item .h" | |
27 #import "ios/chrome/browser/ui/payments/cells/autofill_profile_item.h" | |
28 #import "ios/chrome/browser/ui/payments/cells/payment_method_item.h" | |
29 #import "ios/chrome/browser/ui/payments/cells/payments_text_item.h" | |
30 #import "ios/chrome/browser/ui/payments/cells/price_item.h" | |
31 #include "ios/web/public/payments/payment_request.h" | |
32 #include "ios/web/public/test/test_web_thread_bundle.h" | |
33 #include "testing/gtest/include/gtest/gtest.h" | |
34 #include "testing/platform_test.h" | |
35 #include "ui/base/l10n/l10n_util.h" | |
36 | |
37 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
38 #error "This file requires ARC support." | |
39 #endif | |
40 | |
41 namespace { | |
42 using ::payments::GetShippingOptionSectionString; | |
43 using ::payment_request_util::GetEmailLabelFromAutofillProfile; | |
44 using ::payment_request_util::GetNameLabelFromAutofillProfile; | |
45 using ::payment_request_util::GetPhoneNumberLabelFromAutofillProfile; | |
46 using ::payment_request_util::GetShippingAddressLabelFromAutofillProfile; | |
47 } // namespace | |
48 | |
49 class PaymentRequestMediatorTest : public PlatformTest { | |
50 protected: | |
51 PaymentRequestMediatorTest() | |
52 : autofill_profile_(autofill::test::GetFullProfile()), | |
53 credit_card_(autofill::test::GetCreditCard()) { | |
54 // Add testing profile and credit card to autofill::TestPersonalDataManager. | |
55 personal_data_manager_.AddTestingProfile(&autofill_profile_); | |
56 personal_data_manager_.AddTestingCreditCard(&credit_card_); | |
57 | |
58 payment_request_ = base::MakeUnique<TestPaymentRequest>( | |
59 payment_request_test_util::CreateTestWebPaymentRequest(), | |
60 &personal_data_manager_); | |
61 | |
62 TestChromeBrowserState::Builder test_cbs_builder; | |
63 test_cbs_builder.AddTestingFactory(ios::SigninManagerFactory::GetInstance(), | |
64 &ios::BuildFakeSigninManager); | |
65 chrome_browser_state_ = test_cbs_builder.Build(); | |
66 mediator_ = [[PaymentRequestMediator alloc] | |
67 initWithBrowserState:chrome_browser_state_.get() | |
68 paymentRequest:payment_request_.get()]; | |
69 } | |
70 | |
71 PaymentRequestMediator* GetPaymentRequestMediator() { return mediator_; } | |
72 | |
73 web::TestWebThreadBundle thread_bundle_; | |
74 | |
lpromero
2017/06/06 09:43:55
Is there a reason for this new line? (For example,
Moe
2017/06/07 02:12:51
Exactly. Here, https://cs.chromium.org/chromium/sr
| |
75 autofill::AutofillProfile autofill_profile_; | |
76 autofill::CreditCard credit_card_; | |
77 autofill::TestPersonalDataManager personal_data_manager_; | |
78 std::unique_ptr<TestPaymentRequest> payment_request_; | |
79 std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; | |
80 PaymentRequestMediator* mediator_; | |
81 }; | |
82 | |
83 // Tests wether payment can be completed when expected. | |
lpromero
2017/06/06 09:43:55
*whether
Moe
2017/06/07 02:12:51
Done.
| |
84 TEST_F(PaymentRequestMediatorTest, TestCanPay) { | |
85 // Payment cannot be completed if there is no selected credit card. | |
86 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
87 autofill::CreditCard* selected_credit_card = | |
88 payment_request_->selected_credit_card(); | |
89 payment_request_->set_selected_credit_card(nullptr); | |
90 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
91 | |
92 // Restore the selected credit card. | |
93 payment_request_->set_selected_credit_card(selected_credit_card); | |
94 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
95 | |
96 // Payment cannot be completed if there is no selected shipping profile, | |
97 // unless no shipping information is requested. | |
98 autofill::AutofillProfile* selected_shipping_profile = | |
99 payment_request_->selected_shipping_profile(); | |
100 payment_request_->set_selected_shipping_profile(nullptr); | |
101 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
102 payment_request_->web_payment_request().options.request_shipping = false; | |
103 EXPECT_FALSE([GetPaymentRequestMediator() requestShipping]); | |
104 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
105 | |
106 // Restore the selected shipping profile and request for shipping information. | |
107 payment_request_->set_selected_shipping_profile(selected_shipping_profile); | |
108 payment_request_->web_payment_request().options.request_shipping = true; | |
109 EXPECT_TRUE([GetPaymentRequestMediator() requestShipping]); | |
110 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
111 | |
112 // Payment cannot be completed if there is no selected shipping option, | |
113 // unless no shipping information is requested. | |
114 web::PaymentShippingOption* selected_shipping_option = | |
115 payment_request_->selected_shipping_option(); | |
116 payment_request_->set_selected_shipping_option(nullptr); | |
117 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
118 payment_request_->web_payment_request().options.request_shipping = false; | |
119 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
120 | |
121 // Restore the selected shipping option and request for shipping information. | |
122 payment_request_->set_selected_shipping_option(selected_shipping_option); | |
123 payment_request_->web_payment_request().options.request_shipping = true; | |
124 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
125 | |
126 // Payment cannot be completed if there is no selected contact profile, unless | |
127 // no contact information is requested. | |
128 payment_request_->set_selected_contact_profile(nullptr); | |
129 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
130 payment_request_->web_payment_request().options.request_payer_name = false; | |
131 EXPECT_TRUE([GetPaymentRequestMediator() requestContactInfo]); | |
132 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
133 payment_request_->web_payment_request().options.request_payer_phone = false; | |
134 EXPECT_TRUE([GetPaymentRequestMediator() requestContactInfo]); | |
135 EXPECT_FALSE([GetPaymentRequestMediator() canPay]); | |
136 payment_request_->web_payment_request().options.request_payer_email = false; | |
137 EXPECT_FALSE([GetPaymentRequestMediator() requestContactInfo]); | |
138 EXPECT_TRUE([GetPaymentRequestMediator() canPay]); | |
139 } | |
140 | |
141 // Tests that the Payment Summary item is created as expected. | |
142 TEST_F(PaymentRequestMediatorTest, TestPaymentSummaryItem) { | |
143 EXPECT_TRUE([GetPaymentRequestMediator() hasPaymentItems]); | |
144 | |
145 // Payment Summary item should be of type PriceItem. | |
146 id item = [GetPaymentRequestMediator() paymentSummaryItem]; | |
147 ASSERT_TRUE([item isMemberOfClass:[PriceItem class]]); | |
148 PriceItem* payment_summary_item = base::mac::ObjCCastStrict<PriceItem>(item); | |
149 EXPECT_TRUE([payment_summary_item.item isEqualToString:@"Total"]); | |
150 EXPECT_TRUE([payment_summary_item.price isEqualToString:@"USD $1.00"]); | |
151 EXPECT_EQ(nil, payment_summary_item.notification); | |
152 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
153 payment_summary_item.accessoryType); | |
154 | |
155 // A label should indicate if the total value was changed. | |
156 GetPaymentRequestMediator().totalValueChanged = YES; | |
157 item = [GetPaymentRequestMediator() paymentSummaryItem]; | |
158 payment_summary_item = base::mac::ObjCCastStrict<PriceItem>(item); | |
159 EXPECT_TRUE([payment_summary_item.notification | |
160 isEqualToString:l10n_util::GetNSString(IDS_PAYMENTS_UPDATED_LABEL)]); | |
161 | |
162 // The next time the data source is queried for the Payment Summary item, the | |
163 // label should disappear. | |
164 item = [GetPaymentRequestMediator() paymentSummaryItem]; | |
165 payment_summary_item = base::mac::ObjCCastStrict<PriceItem>(item); | |
166 EXPECT_EQ(nil, payment_summary_item.notification); | |
167 | |
168 // Remove the display items. | |
169 web::PaymentRequest web_payment_request = | |
170 payment_request_->web_payment_request(); | |
171 web_payment_request.details.display_items.clear(); | |
172 payment_request_->UpdatePaymentDetails(web_payment_request.details); | |
173 EXPECT_FALSE([GetPaymentRequestMediator() hasPaymentItems]); | |
174 | |
175 // No accessory view indicates there are no display items. | |
176 item = [GetPaymentRequestMediator() paymentSummaryItem]; | |
177 payment_summary_item = base::mac::ObjCCastStrict<PriceItem>(item); | |
178 EXPECT_EQ(MDCCollectionViewCellAccessoryNone, | |
179 payment_summary_item.accessoryType); | |
180 } | |
181 | |
182 // Tests that the Shipping section header item is created as expected. | |
183 TEST_F(PaymentRequestMediatorTest, TestShippingHeaderItem) { | |
184 // Shipping section header item should be of type PaymentsTextItem. | |
185 id item = [GetPaymentRequestMediator() shippingSectionHeaderItem]; | |
186 ASSERT_TRUE([item isMemberOfClass:[PaymentsTextItem class]]); | |
187 PaymentsTextItem* shipping_section_header_item = | |
188 base::mac::ObjCCastStrict<PaymentsTextItem>(item); | |
189 EXPECT_TRUE([shipping_section_header_item.text | |
190 isEqualToString:l10n_util::GetNSString( | |
191 IDS_PAYMENTS_SHIPPING_SUMMARY_LABEL)]); | |
192 EXPECT_EQ(nil, shipping_section_header_item.detailText); | |
193 } | |
194 | |
195 // Tests that the Shipping Address item is created as expected. | |
196 TEST_F(PaymentRequestMediatorTest, TestShippingAddressItem) { | |
197 // Shipping Address item should be of type AutofillProfileItem. | |
198 id item = [GetPaymentRequestMediator() shippingAddressItem]; | |
199 ASSERT_TRUE([item isMemberOfClass:[AutofillProfileItem class]]); | |
200 AutofillProfileItem* shipping_address_item = | |
201 base::mac::ObjCCastStrict<AutofillProfileItem>(item); | |
202 EXPECT_TRUE([shipping_address_item.name | |
203 isEqualToString:GetNameLabelFromAutofillProfile( | |
204 *payment_request_->selected_shipping_profile())]); | |
205 EXPECT_TRUE([shipping_address_item.address | |
206 isEqualToString:GetShippingAddressLabelFromAutofillProfile( | |
207 *payment_request_->selected_shipping_profile())]); | |
208 EXPECT_TRUE([shipping_address_item.phoneNumber | |
209 isEqualToString:GetPhoneNumberLabelFromAutofillProfile( | |
210 *payment_request_->selected_shipping_profile())]); | |
211 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
212 shipping_address_item.accessoryType); | |
213 | |
214 // Reset the selected shipping profile. | |
215 payment_request_->set_selected_shipping_profile(nullptr); | |
216 | |
217 // When there is no selected shipping address, the Shipping Address item | |
218 // should be of type CollectionViewDetailItem. | |
219 item = [GetPaymentRequestMediator() shippingAddressItem]; | |
220 ASSERT_TRUE([item isMemberOfClass:[CollectionViewDetailItem class]]); | |
221 CollectionViewDetailItem* add_shipping_address_item = | |
222 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
223 EXPECT_TRUE([add_shipping_address_item.text | |
224 isEqualToString:l10n_util::GetNSString( | |
225 IDS_PAYMENTS_SHIPPING_ADDRESS_LABEL)]); | |
226 EXPECT_EQ(nil, add_shipping_address_item.detailText); | |
227 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
228 add_shipping_address_item.accessoryType); | |
229 | |
230 // Remove the shipping profiles. | |
231 payment_request_->ClearShippingProfiles(); | |
232 | |
233 // No accessory view indicates there are no shipping profiles to choose from. | |
234 item = [GetPaymentRequestMediator() shippingAddressItem]; | |
235 add_shipping_address_item = | |
236 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
237 EXPECT_TRUE([add_shipping_address_item.detailText | |
238 isEqualToString:[l10n_util::GetNSString(IDS_ADD) | |
239 uppercaseStringWithLocale:[NSLocale currentLocale]]]); | |
240 EXPECT_EQ(MDCCollectionViewCellAccessoryNone, | |
241 add_shipping_address_item.accessoryType); | |
242 } | |
243 | |
244 // Tests that the Shipping Option item is created as expected. | |
245 TEST_F(PaymentRequestMediatorTest, TestShippingOptionItem) { | |
246 // Shipping Option item should be of type PaymentsTextItem. | |
247 id item = [GetPaymentRequestMediator() shippingOptionItem]; | |
248 ASSERT_TRUE([item isMemberOfClass:[PaymentsTextItem class]]); | |
249 PaymentsTextItem* shipping_option_item = | |
250 base::mac::ObjCCastStrict<PaymentsTextItem>(item); | |
251 EXPECT_TRUE([shipping_option_item.text isEqualToString:@"1-Day"]); | |
252 EXPECT_TRUE([shipping_option_item.detailText isEqualToString:@"$0.99"]); | |
253 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
254 shipping_option_item.accessoryType); | |
255 | |
256 // Reset the selected shipping option. | |
257 payment_request_->set_selected_shipping_option(nullptr); | |
258 | |
259 // When there is no selected shipping option, the Shipping Option item should | |
260 // be of type CollectionViewDetailItem. | |
261 item = [GetPaymentRequestMediator() shippingOptionItem]; | |
262 ASSERT_TRUE([item isMemberOfClass:[CollectionViewDetailItem class]]); | |
263 CollectionViewDetailItem* add_shipping_option_item = | |
264 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
265 EXPECT_TRUE([add_shipping_option_item.text | |
266 isEqualToString:l10n_util::GetNSString( | |
267 IDS_PAYMENTS_SHIPPING_OPTION_LABEL)]); | |
268 EXPECT_EQ(nil, add_shipping_option_item.detailText); | |
269 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
270 add_shipping_option_item.accessoryType); | |
271 } | |
272 | |
273 // Tests that the Payment Method section header item is created as expected. | |
274 TEST_F(PaymentRequestMediatorTest, TestPaymentMethodHeaderItem) { | |
275 // Payment Method section header item should be of type PaymentsTextItem. | |
276 id item = [GetPaymentRequestMediator() paymentMethodSectionHeaderItem]; | |
277 ASSERT_TRUE([item isMemberOfClass:[PaymentsTextItem class]]); | |
278 PaymentsTextItem* payment_method_section_header_item = | |
279 base::mac::ObjCCastStrict<PaymentsTextItem>(item); | |
280 EXPECT_TRUE([payment_method_section_header_item.text | |
281 isEqualToString:l10n_util::GetNSString( | |
282 IDS_PAYMENT_REQUEST_PAYMENT_METHOD_SECTION_NAME)]); | |
283 EXPECT_EQ(nil, payment_method_section_header_item.detailText); | |
284 } | |
285 | |
286 // Tests that the Payment Method item is created as expected. | |
287 TEST_F(PaymentRequestMediatorTest, TestPaymentMethodItem) { | |
288 // Payment Method item should be of type PaymentsTextItem. | |
289 id item = [GetPaymentRequestMediator() paymentMethodItem]; | |
290 ASSERT_TRUE([item isMemberOfClass:[PaymentMethodItem class]]); | |
291 PaymentMethodItem* payment_method_item = | |
292 base::mac::ObjCCastStrict<PaymentMethodItem>(item); | |
293 EXPECT_TRUE([payment_method_item.methodID hasPrefix:@"Visa"]); | |
294 EXPECT_TRUE([payment_method_item.methodID hasSuffix:@"1111"]); | |
295 EXPECT_TRUE([payment_method_item.methodDetail isEqualToString:@"Test User"]); | |
296 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
297 payment_method_item.accessoryType); | |
298 | |
299 // Reset the selected credit card. | |
300 payment_request_->set_selected_credit_card(nullptr); | |
301 | |
302 // When there is no selected credit card, the Payment Method item should be of | |
303 // type CollectionViewDetailItem. | |
304 item = [GetPaymentRequestMediator() paymentMethodItem]; | |
305 ASSERT_TRUE([item isMemberOfClass:[CollectionViewDetailItem class]]); | |
306 CollectionViewDetailItem* add_payment_method_item = | |
307 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
308 EXPECT_TRUE([add_payment_method_item.text | |
309 isEqualToString:l10n_util::GetNSString( | |
310 IDS_PAYMENT_REQUEST_PAYMENT_METHOD_SECTION_NAME)]); | |
311 EXPECT_EQ(nil, add_payment_method_item.detailText); | |
312 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
313 add_payment_method_item.accessoryType); | |
314 | |
315 // Remove the credit cards. | |
316 payment_request_->ClearCreditCards(); | |
317 | |
318 // No accessory view indicates there are no payment methods to choose from. | |
319 item = [GetPaymentRequestMediator() paymentMethodItem]; | |
320 add_payment_method_item = | |
321 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
322 EXPECT_TRUE([add_payment_method_item.detailText | |
323 isEqualToString:[l10n_util::GetNSString(IDS_ADD) | |
324 uppercaseStringWithLocale:[NSLocale currentLocale]]]); | |
325 EXPECT_EQ(MDCCollectionViewCellAccessoryNone, | |
326 add_payment_method_item.accessoryType); | |
327 } | |
328 | |
329 // Tests that the Contact Info section header item is created as expected. | |
330 TEST_F(PaymentRequestMediatorTest, TestContactInfoHeaderItem) { | |
331 // Contact Info section header item should be of type PaymentsTextItem. | |
332 id item = [GetPaymentRequestMediator() contactInfoSectionHeaderItem]; | |
333 ASSERT_TRUE([item isMemberOfClass:[PaymentsTextItem class]]); | |
334 PaymentsTextItem* contact_info_section_header_item = | |
335 base::mac::ObjCCastStrict<PaymentsTextItem>(item); | |
336 EXPECT_TRUE([contact_info_section_header_item.text | |
337 isEqualToString:l10n_util::GetNSString( | |
338 IDS_PAYMENTS_CONTACT_DETAILS_LABEL)]); | |
339 EXPECT_EQ(nil, contact_info_section_header_item.detailText); | |
340 } | |
341 | |
342 // Tests that the Contact Info item is created as expected. | |
343 TEST_F(PaymentRequestMediatorTest, TestContactInfoItem) { | |
344 // Contact Info item should be of type AutofillProfileItem. | |
345 id item = [GetPaymentRequestMediator() contactInfoItem]; | |
346 ASSERT_TRUE([item isMemberOfClass:[AutofillProfileItem class]]); | |
347 AutofillProfileItem* contact_info_item = | |
348 base::mac::ObjCCastStrict<AutofillProfileItem>(item); | |
349 EXPECT_TRUE([contact_info_item.name | |
350 isEqualToString:GetNameLabelFromAutofillProfile( | |
351 *payment_request_->selected_contact_profile())]); | |
352 EXPECT_TRUE([contact_info_item.phoneNumber | |
353 isEqualToString:GetPhoneNumberLabelFromAutofillProfile( | |
354 *payment_request_->selected_contact_profile())]); | |
355 EXPECT_TRUE([contact_info_item.email | |
356 isEqualToString:GetEmailLabelFromAutofillProfile( | |
357 *payment_request_->selected_contact_profile())]); | |
358 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
359 contact_info_item.accessoryType); | |
360 | |
361 // Reset the selected contact profile. | |
362 payment_request_->set_selected_contact_profile(nullptr); | |
363 | |
364 // When there is no selected contact profile, the Payment Method item should | |
365 // be of type CollectionViewDetailItem. | |
366 item = [GetPaymentRequestMediator() contactInfoItem]; | |
367 ASSERT_TRUE([item isMemberOfClass:[CollectionViewDetailItem class]]); | |
368 CollectionViewDetailItem* add_contact_info_item = | |
369 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
370 EXPECT_TRUE([add_contact_info_item.text | |
371 isEqualToString:l10n_util::GetNSString( | |
372 IDS_PAYMENTS_CONTACT_DETAILS_LABEL)]); | |
373 EXPECT_EQ(nil, add_contact_info_item.detailText); | |
374 EXPECT_EQ(MDCCollectionViewCellAccessoryDisclosureIndicator, | |
375 add_contact_info_item.accessoryType); | |
376 | |
377 // Remove the contact profiles. | |
378 payment_request_->ClearContactProfiles(); | |
379 | |
380 // No accessory view indicates there are no contact profiles to choose from. | |
381 item = [GetPaymentRequestMediator() contactInfoItem]; | |
382 add_contact_info_item = | |
383 base::mac::ObjCCastStrict<CollectionViewDetailItem>(item); | |
384 EXPECT_TRUE([add_contact_info_item.detailText | |
385 isEqualToString:[l10n_util::GetNSString(IDS_ADD) | |
386 uppercaseStringWithLocale:[NSLocale currentLocale]]]); | |
387 EXPECT_EQ(MDCCollectionViewCellAccessoryNone, | |
388 add_contact_info_item.accessoryType); | |
389 } | |
390 | |
391 // Tests that the Footer item is created as expected. | |
392 TEST_F(PaymentRequestMediatorTest, TestFooterItem) { | |
393 // Make sure the user is signed out. | |
394 SigninManager* signin_manager = ios::SigninManagerFactory::GetForBrowserState( | |
395 chrome_browser_state_.get()); | |
396 if (signin_manager->IsAuthenticated()) { | |
397 signin_manager->SignOut(signin_metrics::SIGNOUT_TEST, | |
398 signin_metrics::SignoutDelete::IGNORE_METRIC); | |
399 } | |
400 | |
401 // Footer item should be of type CollectionViewFooterItem. | |
402 id item = [GetPaymentRequestMediator() footerItem]; | |
403 ASSERT_TRUE([item isMemberOfClass:[CollectionViewFooterItem class]]); | |
404 CollectionViewFooterItem* footer_item = | |
405 base::mac::ObjCCastStrict<CollectionViewFooterItem>(item); | |
406 EXPECT_TRUE([footer_item.text | |
407 isEqualToString:l10n_util::GetNSString( | |
408 IDS_PAYMENTS_CARD_AND_ADDRESS_SETTINGS_SIGNED_OUT)]); | |
409 | |
410 // Fake a signed in user. | |
411 signin_manager->SetAuthenticatedAccountInfo("12345", "username@example.com"); | |
412 | |
413 item = [GetPaymentRequestMediator() footerItem]; | |
414 footer_item = base::mac::ObjCCastStrict<CollectionViewFooterItem>(item); | |
415 EXPECT_TRUE([footer_item.text | |
416 isEqualToString:l10n_util::GetNSStringF( | |
417 IDS_PAYMENTS_CARD_AND_ADDRESS_SETTINGS_SIGNED_IN, | |
418 base::ASCIIToUTF16("username@example.com"))]); | |
419 } | |
OLD | NEW |