diff --git a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md index 785e6472eaa..982f192746a 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md +++ b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.17+2 + +* Converts FIAPPaymentQueueDeleteTests to swift. + ## 0.3.17+1 * Converts main plugin tests to swift. diff --git a/packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/FIAPPaymentQueueDelegate.h b/packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/FIAPPaymentQueueDelegate.h index 12ef96bee5c..522c081923d 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/FIAPPaymentQueueDelegate.h +++ b/packages/in_app_purchase/in_app_purchase_storekit/darwin/Classes/FIAPPaymentQueueDelegate.h @@ -13,8 +13,8 @@ NS_ASSUME_NONNULL_BEGIN -API_AVAILABLE(ios(13)) -API_UNAVAILABLE(tvos, macos, watchos) +API_AVAILABLE(ios(13), macos(10.15)) +API_UNAVAILABLE(tvos, watchos) @interface FIAPPaymentQueueDelegate : NSObject - (id)initWithMethodChannel:(id)methodChannel; @end diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/ios/Runner.xcodeproj/project.pbxproj b/packages/in_app_purchase/in_app_purchase_storekit/example/ios/Runner.xcodeproj/project.pbxproj index f24f5e17add..213e1e3567e 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/ios/Runner.xcodeproj/project.pbxproj @@ -19,9 +19,9 @@ E680BD031412EB2D02C9190B /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 21CE6E615CF661FC0E18FB0A /* libPods-Runner.a */; }; F22BF91C2BC9B40B00713878 /* SwiftStubs.swift in Sources */ = {isa = PBXBuildFile; fileRef = F22BF91B2BC9B40B00713878 /* SwiftStubs.swift */; }; F24C45E22C409D42000C6C72 /* InAppPurchasePluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F24C45E12C409D41000C6C72 /* InAppPurchasePluginTests.swift */; }; - F295AD3A2C1256DD0067C78A /* Stubs.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD392C1256DD0067C78A /* Stubs.m */; }; - F295AD412C1256F50067C78A /* FIAPPaymentQueueDeleteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD3B2C1256F50067C78A /* FIAPPaymentQueueDeleteTests.m */; }; F276940B2C47268700277144 /* ProductRequestHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F276940A2C47268700277144 /* ProductRequestHandlerTests.swift */; }; + F27694112C49BF6F00277144 /* FIAPPaymentQueueDeleteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F27694102C49BF6F00277144 /* FIAPPaymentQueueDeleteTests.swift */; }; + F295AD3A2C1256DD0067C78A /* Stubs.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD392C1256DD0067C78A /* Stubs.m */; }; F295AD442C1256F50067C78A /* FIATransactionCacheTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD3E2C1256F50067C78A /* FIATransactionCacheTests.m */; }; F295AD452C1256F50067C78A /* PaymentQueueTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD3F2C1256F50067C78A /* PaymentQueueTests.m */; }; F295AD462C1256F50067C78A /* TranslatorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F295AD402C1256F50067C78A /* TranslatorTests.m */; }; @@ -76,10 +76,10 @@ F22BF91A2BC9B40B00713878 /* RunnerTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RunnerTests-Bridging-Header.h"; sourceTree = ""; }; F22BF91B2BC9B40B00713878 /* SwiftStubs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftStubs.swift; sourceTree = ""; }; F24C45E12C409D41000C6C72 /* InAppPurchasePluginTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = InAppPurchasePluginTests.swift; path = ../../shared/RunnerTests/InAppPurchasePluginTests.swift; sourceTree = ""; }; + F276940A2C47268700277144 /* ProductRequestHandlerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProductRequestHandlerTests.swift; path = ../../shared/RunnerTests/ProductRequestHandlerTests.swift; sourceTree = ""; }; + F27694102C49BF6F00277144 /* FIAPPaymentQueueDeleteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FIAPPaymentQueueDeleteTests.swift; path = ../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift; sourceTree = ""; }; F295AD362C1251300067C78A /* Stubs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Stubs.h; path = ../../shared/RunnerTests/Stubs.h; sourceTree = ""; }; F295AD392C1256DD0067C78A /* Stubs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Stubs.m; path = ../../shared/RunnerTests/Stubs.m; sourceTree = ""; }; - F295AD3B2C1256F50067C78A /* FIAPPaymentQueueDeleteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIAPPaymentQueueDeleteTests.m; path = ../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.m; sourceTree = ""; }; - F276940A2C47268700277144 /* ProductRequestHandlerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProductRequestHandlerTests.swift; path = ../../shared/RunnerTests/ProductRequestHandlerTests.swift; sourceTree = ""; }; F295AD3E2C1256F50067C78A /* FIATransactionCacheTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIATransactionCacheTests.m; path = ../../shared/RunnerTests/FIATransactionCacheTests.m; sourceTree = ""; }; F295AD3F2C1256F50067C78A /* PaymentQueueTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PaymentQueueTests.m; path = ../../shared/RunnerTests/PaymentQueueTests.m; sourceTree = ""; }; F295AD402C1256F50067C78A /* TranslatorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TranslatorTests.m; path = ../../shared/RunnerTests/TranslatorTests.m; sourceTree = ""; }; @@ -186,9 +186,9 @@ A59001A521E69658004A3E5E /* RunnerTests */ = { isa = PBXGroup; children = ( + F27694102C49BF6F00277144 /* FIAPPaymentQueueDeleteTests.swift */, F24C45E12C409D41000C6C72 /* InAppPurchasePluginTests.swift */, F276940A2C47268700277144 /* ProductRequestHandlerTests.swift */, - F295AD3B2C1256F50067C78A /* FIAPPaymentQueueDeleteTests.m */, F295AD3E2C1256F50067C78A /* FIATransactionCacheTests.m */, F295AD3F2C1256F50067C78A /* PaymentQueueTests.m */, F295AD402C1256F50067C78A /* TranslatorTests.m */, @@ -435,12 +435,12 @@ files = ( F24C45E22C409D42000C6C72 /* InAppPurchasePluginTests.swift in Sources */, F22BF91C2BC9B40B00713878 /* SwiftStubs.swift in Sources */, - F295AD412C1256F50067C78A /* FIAPPaymentQueueDeleteTests.m in Sources */, F295AD452C1256F50067C78A /* PaymentQueueTests.m in Sources */, F295AD442C1256F50067C78A /* FIATransactionCacheTests.m in Sources */, F276940B2C47268700277144 /* ProductRequestHandlerTests.swift in Sources */, F295AD462C1256F50067C78A /* TranslatorTests.m in Sources */, F295AD3A2C1256DD0067C78A /* Stubs.m in Sources */, + F27694112C49BF6F00277144 /* FIAPPaymentQueueDeleteTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.m b/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.m deleted file mode 120000 index 7c8e7691c6d..00000000000 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.m +++ /dev/null @@ -1 +0,0 @@ -../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.m \ No newline at end of file diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.swift b/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.swift new file mode 120000 index 00000000000..1514b268396 --- /dev/null +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/ios/RunnerTests/FIAPPaymentQueueDeleteTests.swift @@ -0,0 +1 @@ +../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift \ No newline at end of file diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/macos/Runner.xcodeproj/project.pbxproj b/packages/in_app_purchase/in_app_purchase_storekit/example/macos/Runner.xcodeproj/project.pbxproj index 9050d567365..aeebb26a037 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/macos/Runner.xcodeproj/project.pbxproj +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/macos/Runner.xcodeproj/project.pbxproj @@ -29,8 +29,8 @@ 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; F24C45E42C409D87000C6C72 /* InAppPurchasePluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F24C45E32C409D87000C6C72 /* InAppPurchasePluginTests.swift */; }; F27694092C4724B200277144 /* ProductRequestHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F27694082C4724B200277144 /* ProductRequestHandlerTests.swift */; }; + F27694132C49BF7B00277144 /* FIAPPaymentQueueDeleteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F27694122C49BF7B00277144 /* FIAPPaymentQueueDeleteTests.swift */; }; F2C3A7412BD9D33D000D35F2 /* Stubs.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2C3A7402BD9D33D000D35F2 /* Stubs.swift */; }; - F79BDC102905FBE300E3999D /* FIAPPaymentQueueDeleteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F79BDC0F2905FBE300E3999D /* FIAPPaymentQueueDeleteTests.m */; }; F79BDC122905FBF700E3999D /* FIATransactionCacheTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F79BDC112905FBF700E3999D /* FIATransactionCacheTests.m */; }; F79BDC182905FC1800E3999D /* PaymentQueueTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F79BDC172905FC1800E3999D /* PaymentQueueTests.m */; }; F79BDC1C2905FC3200E3999D /* Stubs.m in Sources */ = {isa = PBXBuildFile; fileRef = F79BDC1B2905FC3200E3999D /* Stubs.m */; }; @@ -89,14 +89,14 @@ 46EFB01DD1BBB34F886C33A0 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - F24C45E32C409D87000C6C72 /* InAppPurchasePluginTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = InAppPurchasePluginTests.swift; path = ../../shared/RunnerTests/InAppPurchasePluginTests.swift; sourceTree = ""; }; AEB2EC182EA43F26A351EE3E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B537BC9F2D936311267ABC65 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + F24C45E32C409D87000C6C72 /* InAppPurchasePluginTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = InAppPurchasePluginTests.swift; path = ../../shared/RunnerTests/InAppPurchasePluginTests.swift; sourceTree = ""; }; F27694082C4724B200277144 /* ProductRequestHandlerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProductRequestHandlerTests.swift; path = ../../shared/RunnerTests/ProductRequestHandlerTests.swift; sourceTree = ""; }; + F27694122C49BF7B00277144 /* FIAPPaymentQueueDeleteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FIAPPaymentQueueDeleteTests.swift; path = ../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift; sourceTree = ""; }; F2C3A73F2BD9D33D000D35F2 /* RunnerTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RunnerTests-Bridging-Header.h"; sourceTree = ""; }; F2C3A7402BD9D33D000D35F2 /* Stubs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stubs.swift; sourceTree = ""; }; F700DD0228E652A10004836B /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - F79BDC0F2905FBE300E3999D /* FIAPPaymentQueueDeleteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIAPPaymentQueueDeleteTests.m; path = ../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.m; sourceTree = ""; }; F79BDC112905FBF700E3999D /* FIATransactionCacheTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIATransactionCacheTests.m; path = ../../shared/RunnerTests/FIATransactionCacheTests.m; sourceTree = ""; }; F79BDC152905FC0500E3999D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../../shared/RunnerTests/Info.plist; sourceTree = ""; }; F79BDC172905FC1800E3999D /* PaymentQueueTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PaymentQueueTests.m; path = ../../shared/RunnerTests/PaymentQueueTests.m; sourceTree = ""; }; @@ -217,9 +217,9 @@ F700DD0328E652A10004836B /* RunnerTests */ = { isa = PBXGroup; children = ( + F27694122C49BF7B00277144 /* FIAPPaymentQueueDeleteTests.swift */, F24C45E32C409D87000C6C72 /* InAppPurchasePluginTests.swift */, F27694082C4724B200277144 /* ProductRequestHandlerTests.swift */, - F79BDC0F2905FBE300E3999D /* FIAPPaymentQueueDeleteTests.m */, F79BDC172905FC1800E3999D /* PaymentQueueTests.m */, F79BDC1F2906023C00E3999D /* Stubs.h */, F79BDC152905FC0500E3999D /* Info.plist */, @@ -467,10 +467,10 @@ F79BDC1E2905FC3900E3999D /* TranslatorTests.m in Sources */, F79BDC182905FC1800E3999D /* PaymentQueueTests.m in Sources */, F79BDC1C2905FC3200E3999D /* Stubs.m in Sources */, - F79BDC102905FBE300E3999D /* FIAPPaymentQueueDeleteTests.m in Sources */, F27694092C4724B200277144 /* ProductRequestHandlerTests.swift in Sources */, F79BDC122905FBF700E3999D /* FIATransactionCacheTests.m in Sources */, F2C3A7412BD9D33D000D35F2 /* Stubs.swift in Sources */, + F27694132C49BF7B00277144 /* FIAPPaymentQueueDeleteTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.m b/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.m deleted file mode 120000 index 7c8e7691c6d..00000000000 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.m +++ /dev/null @@ -1 +0,0 @@ -../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.m \ No newline at end of file diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.swift b/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.swift new file mode 120000 index 00000000000..1514b268396 --- /dev/null +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/macos/RunnerTests/FIAPPaymentQueueDeleteTests.swift @@ -0,0 +1 @@ +../../shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift \ No newline at end of file diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.m b/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.m deleted file mode 100644 index 1056c343b17..00000000000 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.m +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import -#import "FIAObjectTranslator.h" -#import "FIAPaymentQueueHandler.h" -#import "Stubs.h" - -@import in_app_purchase_storekit; - -API_AVAILABLE(ios(13.0)) -API_UNAVAILABLE(tvos, macos, watchos) -@interface FIAPPaymentQueueDelegateTests : XCTestCase - -@property(nonatomic, strong) SKPaymentTransaction *transaction; -@property(nonatomic, strong) SKStorefront *storefront; - -@end - -@implementation FIAPPaymentQueueDelegateTests - -- (void)setUp { - NSDictionary *transactionMap = @{ - @"transactionIdentifier" : [NSNull null], - @"transactionState" : @(SKPaymentTransactionStatePurchasing), - @"payment" : [NSNull null], - @"error" : [FIAObjectTranslator getMapFromNSError:[NSError errorWithDomain:@"test_stub" - code:123 - userInfo:@{}]], - @"transactionTimeStamp" : @([NSDate date].timeIntervalSince1970), - @"originalTransaction" : [NSNull null], - }; - self.transaction = [[SKPaymentTransactionStub alloc] initWithMap:transactionMap]; - - NSDictionary *storefrontMap = @{ - @"countryCode" : @"USA", - @"identifier" : @"unique_identifier", - }; - self.storefront = [[SKStorefrontStub alloc] initWithMap:storefrontMap]; -} - -- (void)tearDown { -} - -- (void)testShouldContinueTransaction { - if (@available(iOS 13.0, *)) { - MethodChannelStub *channelStub = [[MethodChannelStub alloc] init]; - channelStub.invokeMethodChannelWithResultsStub = - ^(NSString *_Nonnull method, id _Nonnull arguments, FlutterResult _Nullable result) { - XCTAssertEqualObjects(method, @"shouldContinueTransaction"); - XCTAssertEqualObjects(arguments, - [FIAObjectTranslator getMapFromSKStorefront:self.storefront - andSKPaymentTransaction:self.transaction]); - result(@NO); - }; - - FIAPPaymentQueueDelegate *delegate = - [[FIAPPaymentQueueDelegate alloc] initWithMethodChannel:channelStub]; - - BOOL shouldContinue = [delegate paymentQueue:[[SKPaymentQueueStub alloc] init] - shouldContinueTransaction:self.transaction - inStorefront:self.storefront]; - - XCTAssertFalse(shouldContinue); - } -} - -- (void)testShouldContinueTransaction_should_default_to_yes { - if (@available(iOS 13.0, *)) { - MethodChannelStub *channelStub = [[MethodChannelStub alloc] init]; - FIAPPaymentQueueDelegate *delegate = - [[FIAPPaymentQueueDelegate alloc] initWithMethodChannel:channelStub]; - - channelStub.invokeMethodChannelWithResultsStub = - ^(NSString *_Nonnull method, id _Nonnull arguments, FlutterResult _Nullable result) { - XCTAssertEqualObjects(method, @"shouldContinueTransaction"); - XCTAssertEqualObjects(arguments, - [FIAObjectTranslator getMapFromSKStorefront:self.storefront - andSKPaymentTransaction:self.transaction]); - }; - - BOOL shouldContinue = [delegate paymentQueue:[[SKPaymentQueueStub alloc] init] - shouldContinueTransaction:self.transaction - inStorefront:self.storefront]; - - XCTAssertTrue(shouldContinue); - } -} - -#if TARGET_OS_IOS -- (void)testShouldShowPriceConsentIfNeeded { - if (@available(iOS 13.4, *)) { - MethodChannelStub *channelStub = [[MethodChannelStub alloc] init]; - FIAPPaymentQueueDelegate *delegate = - [[FIAPPaymentQueueDelegate alloc] initWithMethodChannel:channelStub]; - - channelStub.invokeMethodChannelWithResultsStub = - ^(NSString *_Nonnull method, id _Nonnull arguments, FlutterResult _Nullable result) { - XCTAssertEqualObjects(method, @"shouldShowPriceConsent"); - XCTAssertNil(arguments); - result(@NO); - }; - - BOOL shouldShow = - [delegate paymentQueueShouldShowPriceConsent:[[SKPaymentQueueStub alloc] init]]; - - XCTAssertFalse(shouldShow); - } -} -#endif - -#if TARGET_OS_IOS -- (void)testShouldShowPriceConsentIfNeeded_should_default_to_yes { - if (@available(iOS 13.4, *)) { - MethodChannelStub *channelStub = [[MethodChannelStub alloc] init]; - FIAPPaymentQueueDelegate *delegate = - [[FIAPPaymentQueueDelegate alloc] initWithMethodChannel:channelStub]; - - channelStub.invokeMethodChannelWithResultsStub = - ^(NSString *_Nonnull method, id _Nonnull arguments, FlutterResult _Nullable result) { - XCTAssertEqualObjects(method, @"shouldShowPriceConsent"); - XCTAssertNil(arguments); - }; - - BOOL shouldShow = - [delegate paymentQueueShouldShowPriceConsent:[[SKPaymentQueueStub alloc] init]]; - - XCTAssertTrue(shouldShow); - } -} -#endif - -@end diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift b/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift new file mode 100644 index 00000000000..af3fdbc4446 --- /dev/null +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/FIAPPaymentQueueDeleteTests.swift @@ -0,0 +1,127 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import Foundation +import StoreKit +import XCTest + +@testable import in_app_purchase_storekit + +@available(iOS 13.0, *) +final class FIAPPaymentQueueDelegateTests: XCTestCase { + var transaction: SKPaymentTransaction! + var storefront: SKStorefront! + + override func setUp() { + super.setUp() + let transactionMap: [String: Any] = [ + "transactionIdentifier": NSNull(), + "transactionState": SKPaymentTransactionState.purchasing.rawValue, + "payment": NSNull(), + "error": FIAObjectTranslator.getMapFrom( + NSError(domain: "test_stub", code: 123, userInfo: [:])), + "transactionTimeStamp": Date().timeIntervalSince1970, + "originalTransaction": NSNull(), + ] + self.transaction = SKPaymentTransactionStub(map: transactionMap) + + let storefrontMap: [String: Any] = [ + "countryCode": "USA", + "identifier": "unique_identifier", + ] + self.storefront = SKStorefrontStub(map: storefrontMap) + } + + override func tearDown() { + super.tearDown() + } + + func testShouldContinueTransaction() { + let channelStub = MethodChannelStub() + channelStub.invokeMethodChannelWithResultsStub = { method, arguments, result in + XCTAssertEqual(method, "shouldContinueTransaction") + XCTAssertEqual( + arguments as! NSDictionary, + FIAObjectTranslator.getMapFrom( + self.storefront, + andSKPaymentTransaction: self.transaction) as NSDictionary) + + guard let result = result else { + XCTFail("Result should not be nil") + return + } + result(false) + } + + let delegate = FIAPPaymentQueueDelegate(methodChannel: channelStub) + + let shouldContinue = delegate.paymentQueue( + SKPaymentQueueStub(), + shouldContinue: self.transaction, + in: self.storefront) + + XCTAssertFalse(shouldContinue) + } + + func testShouldContinueTransactionShouldDefaultToYes() { + let channelStub = MethodChannelStub() + let delegate = FIAPPaymentQueueDelegate(methodChannel: channelStub) + + channelStub.invokeMethodChannelWithResultsStub = { method, arguments, result in + XCTAssertEqual(method, "shouldContinueTransaction") + XCTAssertEqual( + arguments as! NSDictionary, + FIAObjectTranslator.getMapFrom( + self.storefront, + andSKPaymentTransaction: self.transaction) as NSDictionary) + } + + let shouldContinue = delegate.paymentQueue( + SKPaymentQueueStub(), + shouldContinue: self.transaction, + in: self.storefront) + + XCTAssertTrue(shouldContinue) + } + + #if TARGET_OS_IOS + func testShouldShowPriceConsentIfNeeded() throws { + if #available(iOS 13.4, *) { + let channelStub = MethodChannelStub() + let delegate = FIAPPaymentQueueDelegate(methodChannel: channelStub) + + channelStub.invokeMethodChannelWithResultsStub = { method, arguments, result in + XCTAssertEqual(method, "shouldShowPriceConsent") + XCTAssertNil(arguments) + + guard let result = result else { + XCTFail("Result should not be nil") + return + } + result(false) + } + + let shouldShow = delegate.paymentQueueShouldShowPriceConsent(SKPaymentQueueStub()) + + XCTAssertFalse(shouldShow) + } + } + + func testShouldShowPriceConsentIfNeededShouldDefaultToYes() { + if #available(iOS 13.4, *) { + let channelStub = MethodChannelStub() + let delegate = FIAPPaymentQueueDelegate(methodChannel: channelStub) + + channelStub.invokeMethodChannelWithResultsStub = { method, arguments, result in + XCTAssertEqual(method, "shouldShowPriceConsent") + XCTAssertNil(arguments) + } + + let shouldShow = delegate.paymentQueueShouldShowPriceConsent(SKPaymentQueueStub()) + + XCTAssertTrue(shouldShow) + } + } + #endif +} diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/Stubs.h b/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/Stubs.h index 422711b13f1..bfdec37d394 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/Stubs.h +++ b/packages/in_app_purchase/in_app_purchase_storekit/example/shared/RunnerTests/Stubs.h @@ -120,7 +120,7 @@ API_AVAILABLE(ios(13.0), macos(10.15)) @property(nonatomic, copy, nullable) void (^invokeMethodChannelStub) (NSString *method, id _Nullable arguments); @property(nonatomic, copy, nullable) void (^invokeMethodChannelWithResultsStub) - (NSString *method, id arguments, FlutterResult _Nullable); + (NSString *method, id _Nullable arguments, FlutterResult _Nullable); @end diff --git a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml index 2bc2c6d7359..d9f70562270 100644 --- a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml +++ b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml @@ -2,7 +2,7 @@ name: in_app_purchase_storekit description: An implementation for the iOS and macOS platforms of the Flutter `in_app_purchase` plugin. This uses the StoreKit Framework. repository: https://github.com/flutter/packages/tree/main/packages/in_app_purchase/in_app_purchase_storekit issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22 -version: 0.3.17+1 +version: 0.3.17+2 environment: sdk: ^3.2.3