Fix test
This commit is contained in:
parent
dcf6a04ec1
commit
05d59f51e6
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
|
|
||||||
@interface STPApplePayContext(Testing) <PKPaymentAuthorizationControllerDelegate>
|
@interface STPApplePayContext(Testing) <PKPaymentAuthorizationControllerDelegate>
|
||||||
@property (nonatomic, nullable) PKPaymentAuthorizationController *viewController;
|
@property (nonatomic, nullable) PKPaymentAuthorizationController *authorizationController;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface STPApplePayContextFunctionalTest : XCTestCase
|
@interface STPApplePayContextFunctionalTest : XCTestCase
|
||||||
|
@ -51,16 +51,16 @@
|
||||||
|
|
||||||
// Stub dismissViewControllerAnimated: to just call its completion block
|
// Stub dismissViewControllerAnimated: to just call its completion block
|
||||||
XCTestExpectation *didDismissVC = [self expectationWithDescription:@"viewController dismissed"];
|
XCTestExpectation *didDismissVC = [self expectationWithDescription:@"viewController dismissed"];
|
||||||
id mockVC = OCMClassMock([PKPaymentAuthorizationController class]);
|
id mockC = OCMClassMock([PKPaymentAuthorizationController class]);
|
||||||
OCMStub([mockVC dismissViewControllerAnimated:YES completion:[OCMArg any]]).andDo(^(NSInvocation *invocation) {
|
OCMStub([mockC dismissWithCompletion:[OCMArg any]]).andDo(^(NSInvocation *invocation) {
|
||||||
__unsafe_unretained void (^dismissCompletion)(void);
|
__unsafe_unretained void (^dismissCompletion)(void);
|
||||||
[invocation getArgument:&dismissCompletion atIndex:3];
|
[invocation getArgument:&dismissCompletion atIndex:2];
|
||||||
dismissCompletion();
|
dismissCompletion();
|
||||||
[didDismissVC fulfill];
|
[didDismissVC fulfill];
|
||||||
});
|
});
|
||||||
self.context = [[STPApplePayContext alloc] initWithPaymentRequest:[STPFixtures applePayRequest] delegate:self.delegate];
|
self.context = [[STPApplePayContext alloc] initWithPaymentRequest:[STPFixtures applePayRequest] delegate:self.delegate];
|
||||||
self.context.apiClient = self.apiClient;
|
self.context.apiClient = self.apiClient;
|
||||||
self.context.viewController = mockVC;
|
self.context.authorizationController = mockC;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testCompletesManualConfirmationPaymentIntent {
|
- (void)testCompletesManualConfirmationPaymentIntent {
|
||||||
|
@ -195,12 +195,12 @@
|
||||||
// Cancelling Apple Pay *before* the context attempts to confirms the PI...
|
// Cancelling Apple Pay *before* the context attempts to confirms the PI...
|
||||||
STPTestApplePayContextDelegate *delegate = self.delegate;
|
STPTestApplePayContextDelegate *delegate = self.delegate;
|
||||||
delegate.didCreatePaymentMethodDelegateMethod = ^(__unused STPPaymentMethod *paymentMethod, __unused PKPayment *paymentInformation, STPIntentClientSecretCompletionBlock completion) {
|
delegate.didCreatePaymentMethodDelegateMethod = ^(__unused STPPaymentMethod *paymentMethod, __unused PKPayment *paymentInformation, STPIntentClientSecretCompletionBlock completion) {
|
||||||
[self.context paymentAuthorizationControllerDidFinish:self.context.viewController]; // Simulate cancel before passing PI to the context
|
[self.context paymentAuthorizationControllerDidFinish:self.context.authorizationController]; // Simulate cancel before passing PI to the context
|
||||||
// ...should never retrieve the PI (b/c it is cancelled before)
|
// ...should never retrieve the PI (b/c it is cancelled before)
|
||||||
completion(@"A 'client secret' that triggers an exception if fetched", nil);
|
completion(@"A 'client secret' that triggers an exception if fetched", nil);
|
||||||
};
|
};
|
||||||
|
|
||||||
[self.context paymentAuthorizationController:self.context.viewController
|
[self.context paymentAuthorizationController:self.context.authorizationController
|
||||||
didAuthorizePayment:[STPFixtures simulatorApplePayPayment]
|
didAuthorizePayment:[STPFixtures simulatorApplePayPayment]
|
||||||
handler:^(PKPaymentAuthorizationResult * __unused _Nonnull result) {}]; // Simulate user tapping 'Pay' button in Apple Pay
|
handler:^(PKPaymentAuthorizationResult * __unused _Nonnull result) {}]; // Simulate user tapping 'Pay' button in Apple Pay
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@
|
||||||
// Cancelling Apple Pay *after* the context attempts to confirms the PI...
|
// Cancelling Apple Pay *after* the context attempts to confirms the PI...
|
||||||
id apiClientMock = OCMPartialMock(self.apiClient);
|
id apiClientMock = OCMPartialMock(self.apiClient);
|
||||||
OCMStub([apiClientMock confirmPaymentIntentWithParams:[OCMArg any] completion:[OCMArg any]]).andForwardToRealObject().andDo(^(NSInvocation *__unused invocation) {
|
OCMStub([apiClientMock confirmPaymentIntentWithParams:[OCMArg any] completion:[OCMArg any]]).andForwardToRealObject().andDo(^(NSInvocation *__unused invocation) {
|
||||||
[self.context paymentAuthorizationControllerDidFinish:self.context.viewController]; // Simulate cancel after PI confirm begins
|
[self.context paymentAuthorizationControllerDidFinish:self.context.authorizationController]; // Simulate cancel after PI confirm begins
|
||||||
});
|
});
|
||||||
|
|
||||||
__block NSString *clientSecret;
|
__block NSString *clientSecret;
|
||||||
|
@ -233,7 +233,7 @@
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
|
||||||
[self.context paymentAuthorizationController:self.context.viewController
|
[self.context paymentAuthorizationController:self.context.authorizationController
|
||||||
didAuthorizePayment:[STPFixtures simulatorApplePayPayment]
|
didAuthorizePayment:[STPFixtures simulatorApplePayPayment]
|
||||||
handler:^(PKPaymentAuthorizationResult * __unused _Nonnull result) {}]; // Simulate user tapping 'Pay' button in Apple Pay
|
handler:^(PKPaymentAuthorizationResult * __unused _Nonnull result) {}]; // Simulate user tapping 'Pay' button in Apple Pay
|
||||||
|
|
||||||
|
@ -261,10 +261,10 @@
|
||||||
// When the user taps 'Pay', PKPaymentAuthorizationController calls `didAuthorizePayment:completion:`
|
// When the user taps 'Pay', PKPaymentAuthorizationController calls `didAuthorizePayment:completion:`
|
||||||
// After you call its completion block, it calls `paymentAuthorizationControllerDidFinish:`
|
// After you call its completion block, it calls `paymentAuthorizationControllerDidFinish:`
|
||||||
XCTestExpectation *didCallAuthorizePaymentCompletion = [self expectationWithDescription:@"ApplePayContext called completion block of paymentAuthorizationController:didAuthorizePayment:completion:"];
|
XCTestExpectation *didCallAuthorizePaymentCompletion = [self expectationWithDescription:@"ApplePayContext called completion block of paymentAuthorizationController:didAuthorizePayment:completion:"];
|
||||||
[self.context paymentAuthorizationController:self.context.viewController didAuthorizePayment:[STPFixtures simulatorApplePayPayment] handler:^(PKPaymentAuthorizationResult * _Nonnull result) {
|
[self.context paymentAuthorizationController:self.context.authorizationController didAuthorizePayment:[STPFixtures simulatorApplePayPayment] handler:^(PKPaymentAuthorizationResult * _Nonnull result) {
|
||||||
XCTAssertEqual(expectedStatus, result.status);
|
XCTAssertEqual(expectedStatus, result.status);
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
[self.context paymentAuthorizationControllerDidFinish:self.context.viewController];
|
[self.context paymentAuthorizationControllerDidFinish:self.context.authorizationController];
|
||||||
[didCallAuthorizePaymentCompletion fulfill];
|
[didCallAuthorizePaymentCompletion fulfill];
|
||||||
});
|
});
|
||||||
}];
|
}];
|
||||||
|
|
Loading…
Reference in New Issue