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