| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h" | 5 #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h" |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" | 24 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" |
| 25 #include "ios/chrome/browser/payments/payment_request.h" | 25 #include "ios/chrome/browser/payments/payment_request.h" |
| 26 #include "ios/chrome/browser/payments/payment_request_test_util.h" | 26 #include "ios/chrome/browser/payments/payment_request_test_util.h" |
| 27 #include "ios/chrome/browser/payments/test_payment_request.h" | 27 #include "ios/chrome/browser/payments/test_payment_request.h" |
| 28 #include "ios/chrome/browser/signin/fake_signin_manager_builder.h" | 28 #include "ios/chrome/browser/signin/fake_signin_manager_builder.h" |
| 29 #include "ios/chrome/browser/signin/signin_manager_factory.h" | 29 #include "ios/chrome/browser/signin/signin_manager_factory.h" |
| 30 #import "ios/chrome/browser/ui/payments/payment_request_view_controller.h" | 30 #import "ios/chrome/browser/ui/payments/payment_request_view_controller.h" |
| 31 #import "ios/chrome/test/scoped_key_window.h" | 31 #import "ios/chrome/test/scoped_key_window.h" |
| 32 #import "ios/testing/ocmock_complex_type_helper.h" | 32 #import "ios/testing/ocmock_complex_type_helper.h" |
| 33 #include "ios/web/public/payments/payment_request.h" | 33 #include "ios/web/public/payments/payment_request.h" |
| 34 #import "ios/web/public/test/fakes/test_web_state.h" |
| 34 #import "ios/web/public/test/test_web_thread_bundle.h" | 35 #import "ios/web/public/test/test_web_thread_bundle.h" |
| 35 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
| 36 #include "testing/platform_test.h" | 37 #include "testing/platform_test.h" |
| 37 #include "third_party/ocmock/OCMock/OCMock.h" | 38 #include "third_party/ocmock/OCMock/OCMock.h" |
| 38 #include "third_party/ocmock/gtest_support.h" | 39 #include "third_party/ocmock/gtest_support.h" |
| 39 | 40 |
| 40 #if !defined(__has_feature) || !__has_feature(objc_arc) | 41 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 41 #error "This file requires ARC support." | 42 #error "This file requires ARC support." |
| 42 #endif | 43 #endif |
| 43 | 44 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 : autofill_profile_(autofill::test::GetFullProfile()), | 94 : autofill_profile_(autofill::test::GetFullProfile()), |
| 94 credit_card_(autofill::test::GetCreditCard()), | 95 credit_card_(autofill::test::GetCreditCard()), |
| 95 pref_service_(payments::test::PrefServiceForTesting()) { | 96 pref_service_(payments::test::PrefServiceForTesting()) { |
| 96 // Add testing profile and credit card to autofill::TestPersonalDataManager. | 97 // Add testing profile and credit card to autofill::TestPersonalDataManager. |
| 97 personal_data_manager_.AddTestingProfile(&autofill_profile_); | 98 personal_data_manager_.AddTestingProfile(&autofill_profile_); |
| 98 personal_data_manager_.AddTestingCreditCard(&credit_card_); | 99 personal_data_manager_.AddTestingCreditCard(&credit_card_); |
| 99 | 100 |
| 100 TestChromeBrowserState::Builder test_cbs_builder; | 101 TestChromeBrowserState::Builder test_cbs_builder; |
| 101 test_cbs_builder.AddTestingFactory(ios::SigninManagerFactory::GetInstance(), | 102 test_cbs_builder.AddTestingFactory(ios::SigninManagerFactory::GetInstance(), |
| 102 &ios::BuildFakeSigninManager); | 103 &ios::BuildFakeSigninManager); |
| 103 browser_state_ = test_cbs_builder.Build(); | 104 chrome_browser_state_ = test_cbs_builder.Build(); |
| 104 | 105 |
| 105 payment_request_ = base::MakeUnique<payments::TestPaymentRequest>( | 106 payment_request_ = base::MakeUnique<payments::TestPaymentRequest>( |
| 106 payment_request_test_util::CreateTestWebPaymentRequest(), | 107 payment_request_test_util::CreateTestWebPaymentRequest(), |
| 107 browser_state_.get(), &personal_data_manager_); | 108 chrome_browser_state_.get(), &web_state_, &personal_data_manager_); |
| 108 payment_request_->SetPrefService(pref_service_.get()); | 109 payment_request_->SetPrefService(pref_service_.get()); |
| 109 } | 110 } |
| 110 | 111 |
| 111 base::test::ScopedTaskEnvironment scoped_task_evironment_; | 112 base::test::ScopedTaskEnvironment scoped_task_evironment_; |
| 112 | 113 |
| 113 autofill::AutofillProfile autofill_profile_; | 114 autofill::AutofillProfile autofill_profile_; |
| 114 autofill::CreditCard credit_card_; | 115 autofill::CreditCard credit_card_; |
| 116 web::TestWebState web_state_; |
| 115 std::unique_ptr<PrefService> pref_service_; | 117 std::unique_ptr<PrefService> pref_service_; |
| 116 autofill::TestPersonalDataManager personal_data_manager_; | 118 autofill::TestPersonalDataManager personal_data_manager_; |
| 119 std::unique_ptr<TestChromeBrowserState> chrome_browser_state_; |
| 117 std::unique_ptr<payments::TestPaymentRequest> payment_request_; | 120 std::unique_ptr<payments::TestPaymentRequest> payment_request_; |
| 118 std::unique_ptr<ios::ChromeBrowserState> browser_state_; | |
| 119 }; | 121 }; |
| 120 | 122 |
| 121 // Tests that invoking start and stop on the coordinator presents and | 123 // Tests that invoking start and stop on the coordinator presents and |
| 122 // dismisses | 124 // dismisses |
| 123 // the PaymentRequestViewController, respectively. | 125 // the PaymentRequestViewController, respectively. |
| 124 TEST_F(PaymentRequestCoordinatorTest, StartAndStop) { | 126 TEST_F(PaymentRequestCoordinatorTest, StartAndStop) { |
| 125 UIViewController* base_view_controller = [[UIViewController alloc] init]; | 127 UIViewController* base_view_controller = [[UIViewController alloc] init]; |
| 126 ScopedKeyWindow scoped_key_window_; | 128 ScopedKeyWindow scoped_key_window_; |
| 127 [scoped_key_window_.Get() setRootViewController:base_view_controller]; | 129 [scoped_key_window_.Get() setRootViewController:base_view_controller]; |
| 128 | 130 |
| 129 PaymentRequestCoordinator* coordinator = [[PaymentRequestCoordinator alloc] | 131 PaymentRequestCoordinator* coordinator = [[PaymentRequestCoordinator alloc] |
| 130 initWithBaseViewController:base_view_controller]; | 132 initWithBaseViewController:base_view_controller]; |
| 131 [coordinator setPaymentRequest:payment_request_.get()]; | 133 [coordinator setPaymentRequest:payment_request_.get()]; |
| 132 [coordinator setBrowserState:browser_state_.get()]; | 134 [coordinator setBrowserState:chrome_browser_state_.get()]; |
| 133 | 135 |
| 134 [coordinator start]; | 136 [coordinator start]; |
| 135 // Spin the run loop to trigger the animation. | 137 // Spin the run loop to trigger the animation. |
| 136 base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSecondsD(1)); | 138 base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSecondsD(1)); |
| 137 EXPECT_TRUE([base_view_controller.presentedViewController | 139 EXPECT_TRUE([base_view_controller.presentedViewController |
| 138 isMemberOfClass:[UINavigationController class]]); | 140 isMemberOfClass:[UINavigationController class]]); |
| 139 UINavigationController* navigation_controller = | 141 UINavigationController* navigation_controller = |
| 140 base::mac::ObjCCastStrict<UINavigationController>( | 142 base::mac::ObjCCastStrict<UINavigationController>( |
| 141 base_view_controller.presentedViewController); | 143 base_view_controller.presentedViewController); |
| 142 EXPECT_EQ(1u, navigation_controller.viewControllers.count); | 144 EXPECT_EQ(1u, navigation_controller.viewControllers.count); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 id delegate = [OCMockObject | 291 id delegate = [OCMockObject |
| 290 mockForProtocol:@protocol(PaymentMethodSelectionCoordinatorDelegate)]; | 292 mockForProtocol:@protocol(PaymentMethodSelectionCoordinatorDelegate)]; |
| 291 id delegate_mock([[PaymentRequestCoordinatorDelegateMock alloc] | 293 id delegate_mock([[PaymentRequestCoordinatorDelegateMock alloc] |
| 292 initWithRepresentedObject:delegate]); | 294 initWithRepresentedObject:delegate]); |
| 293 SEL selector = @selector(paymentRequestCoordinatorDidCancel:); | 295 SEL selector = @selector(paymentRequestCoordinatorDidCancel:); |
| 294 [delegate_mock onSelector:selector | 296 [delegate_mock onSelector:selector |
| 295 callBlockExpectation:^(PaymentRequestCoordinator* callerCoordinator) { | 297 callBlockExpectation:^(PaymentRequestCoordinator* callerCoordinator) { |
| 296 EXPECT_EQ(coordinator, callerCoordinator); | 298 EXPECT_EQ(coordinator, callerCoordinator); |
| 297 }]; | 299 }]; |
| 298 [coordinator setDelegate:delegate_mock]; | 300 [coordinator setDelegate:delegate_mock]; |
| 299 [coordinator setBrowserState:browser_state_.get()]; | 301 [coordinator setBrowserState:chrome_browser_state_.get()]; |
| 300 | 302 |
| 301 [coordinator start]; | 303 [coordinator start]; |
| 302 // Spin the run loop to trigger the animation. | 304 // Spin the run loop to trigger the animation. |
| 303 base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSecondsD(1)); | 305 base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSecondsD(1)); |
| 304 | 306 |
| 305 // Call the controller delegate method. | 307 // Call the controller delegate method. |
| 306 [coordinator paymentRequestViewControllerDidCancel:nil]; | 308 [coordinator paymentRequestViewControllerDidCancel:nil]; |
| 307 } | 309 } |
| OLD | NEW |