Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit d028a95

Browse files
committed
in_app_purchase: started supported null as a parameter for the sandbox arguement
1 parent 18771ff commit d028a95

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

packages/in_app_purchase/ios/Classes/InAppPurchasePlugin.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,10 @@ - (void)addPayment:(FlutterMethodCall *)call result:(FlutterResult)result {
179179
NSNumber *quantity = [paymentMap objectForKey:@"quantity"];
180180
payment.quantity = (quantity != nil) ? quantity.integerValue : 1;
181181
if (@available(iOS 8.3, *)) {
182-
payment.simulatesAskToBuyInSandbox =
183-
[[paymentMap objectForKey:@"simulatesAskToBuyInSandbox"] boolValue];
182+
NSNumber *simulatesAskToBuyInSandbox = [paymentMap objectForKey:@"simulatesAskToBuyInSandbox"];
183+
payment.simulatesAskToBuyInSandbox = (id)simulatesAskToBuyInSandbox == (id)[NSNull null]
184+
? NO
185+
: [simulatesAskToBuyInSandbox boolValue];
184186
}
185187

186188
if (![self.paymentQueueHandler addPayment:payment]) {

packages/in_app_purchase/ios/Tests/InAppPurchasePluginTest.m

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,42 @@ - (void)testAddPaymentSuccessWithMockQueue {
146146
XCTAssertEqual(transactionForUpdateBlock.transactionState, SKPaymentTransactionStatePurchased);
147147
}
148148

149+
- (void)testAddPaymentWithNullSandboxArgument {
150+
XCTestExpectation* expectation =
151+
[self expectationWithDescription:@"result should return success state"];
152+
FlutterMethodCall* call =
153+
[FlutterMethodCall methodCallWithMethodName:@"-[InAppPurchasePlugin addPayment:result:]"
154+
arguments:@{
155+
@"productIdentifier" : @"123",
156+
@"quantity" : @(1),
157+
@"simulatesAskToBuyInSandbox" : [NSNull null],
158+
}];
159+
SKPaymentQueueStub* queue = [SKPaymentQueueStub new];
160+
queue.testState = SKPaymentTransactionStatePurchased;
161+
__block SKPaymentTransaction* transactionForUpdateBlock;
162+
self.plugin.paymentQueueHandler = [[FIAPaymentQueueHandler alloc] initWithQueue:queue
163+
transactionsUpdated:^(NSArray<SKPaymentTransaction*>* _Nonnull transactions) {
164+
SKPaymentTransaction* transaction = transactions[0];
165+
if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
166+
transactionForUpdateBlock = transaction;
167+
[expectation fulfill];
168+
}
169+
}
170+
transactionRemoved:nil
171+
restoreTransactionFailed:nil
172+
restoreCompletedTransactionsFinished:nil
173+
shouldAddStorePayment:^BOOL(SKPayment* _Nonnull payment, SKProduct* _Nonnull product) {
174+
return YES;
175+
}
176+
updatedDownloads:nil];
177+
[queue addTransactionObserver:self.plugin.paymentQueueHandler];
178+
[self.plugin handleMethodCall:call
179+
result:^(id r){
180+
}];
181+
[self waitForExpectations:@[ expectation ] timeout:5];
182+
XCTAssertEqual(transactionForUpdateBlock.transactionState, SKPaymentTransactionStatePurchased);
183+
}
184+
149185
- (void)testRestoreTransactions {
150186
XCTestExpectation* expectation =
151187
[self expectationWithDescription:@"result successfully restore transactions"];

0 commit comments

Comments
 (0)