From cf555aa0344cf6a9394bbf34ed61e3369322e168 Mon Sep 17 00:00:00 2001 From: Cesar de la Vega Date: Tue, 24 Aug 2021 08:39:11 -0700 Subject: [PATCH] Move tests and remove PurchasesTests (#764) --- Purchases.xcodeproj/project.pbxproj | 639 +++++------------- .../xcschemes/Unit Tests.xcscheme | 23 +- .../Error+Extensions.swift | 2 +- .../Attribution/AttributionPosterTests.swift | 2 +- .../NSDate+RCExtensionsTests.swift | 1 - .../NSError+RCExtensionsTests.swift | 1 - .../Misc/ISOPeriodFormatterTests.swift | 0 .../Mocks/MockAttributionDataMigrator.swift | 0 .../Mocks/MockAttributionFetcher.swift | 2 +- .../Mocks/MockAttributionTypeFactory.swift | 2 +- .../Mocks/MockBackend.swift | 2 +- .../Mocks/MockDateProvider.swift | 0 .../Mocks/MockDeviceCache.swift | 1 - .../Mocks/MockHTTPClient.swift | 1 - .../Mocks/MockIdentityManager.swift | 0 .../Mocks/MockInMemoryCachedOfferings.swift | 0 .../MockIntroEligibilityCalculator.swift | 4 +- .../Mocks/MockNotificationCenter.swift | 0 .../Mocks/MockOfferingsFactory.swift | 4 +- .../Mocks/MockOperationDispatcher.swift | 0 .../Mocks/MockPaymentDiscount.swift | 0 .../Mocks/MockProductDiscount.swift | 0 .../Mocks/MockPurchaserInfoManager.swift | 0 .../Mocks/MockPurchasesDelegate.swift | 0 .../Mocks/MockReceiptFetcher.swift | 0 .../Mocks/MockRequestFetcher.swift | 0 .../Mocks/MockStoreKitWrapper.swift | 0 .../MockSubscriberAttributesManager.swift | 8 +- .../Mocks/MockSystemInfo.swift | 0 .../Networking/BackendTests.swift | 1 - .../Networking/HTTPClientTests.swift | 1 - .../Purchasing/EntitlementInfosTests.swift | 1 - .../Purchasing/OfferingsManagerTests.swift | 0 .../Purchasing/OfferingsTests.swift | 1 - .../Purchasing/PurchaserInfoTests.swift | 1 - .../Purchasing/PurchasesTests.swift | 0 .../Purchasing/RCIntroEligibilityTests.swift | 2 +- .../StoreKitRequestFetcherTests.swift | 0 .../BackendSubscriberAttributesTests.swift | 0 .../PurchasesSubscriberAttributesTests.swift | 0 .../SubscriberAttributesManagerTests.swift | 1 - .../ObjCThrowExceptionMatcher.swift | 4 +- .../PurchasesCoreSwiftTests-Bridging-Header.h | 0 .../TestHelpers/RCObjC.h | 0 .../TestHelpers/RCObjC.m | 0 .../Identity/PurchaserInfoManagerTests.swift | 1 - PurchasesTests/Info.plist | 24 - PurchasesTests/Mocks/MockETagManager.swift | 58 -- .../Mocks/MockProductsRequest.swift | 50 -- PurchasesTests/Mocks/MockReceiptParser.swift | 30 - PurchasesTests/Mocks/MockSKDiscount.swift | 31 - PurchasesTests/Mocks/MockSKProduct.swift | 57 -- PurchasesTests/Mocks/MockTransaction.swift | 30 - PurchasesTests/Mocks/MockUserDefaults.swift | 59 -- ...roductSubscriptionDurationExtensions.swift | 20 - 55 files changed, 198 insertions(+), 866 deletions(-) rename {PurchasesTests => PurchasesCoreSwiftTests}/Attribution/AttributionPosterTests.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Misc/ISOPeriodFormatterTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockAttributionDataMigrator.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockAttributionFetcher.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockAttributionTypeFactory.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockBackend.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockDateProvider.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockDeviceCache.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockHTTPClient.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockIdentityManager.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockInMemoryCachedOfferings.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockIntroEligibilityCalculator.swift (98%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockNotificationCenter.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockOfferingsFactory.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockOperationDispatcher.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockPaymentDiscount.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockProductDiscount.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockPurchaserInfoManager.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockPurchasesDelegate.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockReceiptFetcher.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockRequestFetcher.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockStoreKitWrapper.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockSubscriberAttributesManager.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Mocks/MockSystemInfo.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Networking/BackendTests.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Purchasing/OfferingsManagerTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Purchasing/PurchasesTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/Purchasing/StoreKitRequestFetcherTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/SubscriberAttributes/BackendSubscriberAttributesTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/SubscriberAttributes/PurchasesSubscriberAttributesTests.swift (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/SubscriberAttributes/SubscriberAttributesManagerTests.swift (99%) rename {PurchasesTests => PurchasesCoreSwiftTests}/TestHelpers/ObjCThrowExceptionMatcher.swift (99%) rename PurchasesTests/PurchasesTests-Bridging-Header.h => PurchasesCoreSwiftTests/TestHelpers/PurchasesCoreSwiftTests-Bridging-Header.h (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/TestHelpers/RCObjC.h (100%) rename {PurchasesTests => PurchasesCoreSwiftTests}/TestHelpers/RCObjC.m (100%) delete mode 100644 PurchasesTests/Info.plist delete mode 100644 PurchasesTests/Mocks/MockETagManager.swift delete mode 100644 PurchasesTests/Mocks/MockProductsRequest.swift delete mode 100644 PurchasesTests/Mocks/MockReceiptParser.swift delete mode 100644 PurchasesTests/Mocks/MockSKDiscount.swift delete mode 100644 PurchasesTests/Mocks/MockSKProduct.swift delete mode 100644 PurchasesTests/Mocks/MockTransaction.swift delete mode 100644 PurchasesTests/Mocks/MockUserDefaults.swift delete mode 100644 PurchasesTests/Mocks/SKProductSubscriptionDurationExtensions.swift diff --git a/Purchases.xcodeproj/project.pbxproj b/Purchases.xcodeproj/project.pbxproj index ff3d284a63..b084fd8adc 100644 --- a/Purchases.xcodeproj/project.pbxproj +++ b/Purchases.xcodeproj/project.pbxproj @@ -13,33 +13,19 @@ 2CD72948268A828400BFC976 /* Locale+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CD72947268A828400BFC976 /* Locale+Extensions.swift */; }; 2D11F5E1250FF886005A70E8 /* AttributionStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D11F5E0250FF886005A70E8 /* AttributionStrings.swift */; }; 2D1C3F3926B9D8B800112626 /* MockBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1C3F3826B9D8B800112626 /* MockBundle.swift */; }; - 2D22679125F2D9AD00E6950C /* PurchasesTests-Bridging-Header.h in Headers */ = {isa = PBXBuildFile; fileRef = 35262A291F7D783F00C04F2C /* PurchasesTests-Bridging-Header.h */; }; - 2D390255259CF46000DB19C0 /* MockPaymentDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D390254259CF46000DB19C0 /* MockPaymentDiscount.swift */; }; - 2D3E29CE25E8009000456FA8 /* MockAttributionTypeFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35DA3E083FE37DAF15954 /* MockAttributionTypeFactory.swift */; }; 2D4C18A924F47E5000F268CD /* Purchases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4C18A824F47E4400F268CD /* Purchases.swift */; }; - 2D4D6AF124F6FEE000B656BE /* MockIntroEligibilityCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA0068E24E2E515002C59D3 /* MockIntroEligibilityCalculator.swift */; }; - 2D4D6AF324F7172900B656BE /* MockProductsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4D6AF224F7172900B656BE /* MockProductsRequest.swift */; }; 2D4D6AF424F717B800B656BE /* ASN1ObjectIdentifierEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C4A4B241A545D1D06BD /* ASN1ObjectIdentifierEncoder.swift */; }; 2D4D6AF524F717B800B656BE /* ContainerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35092F0E41512E0D610BA /* ContainerFactory.swift */; }; 2D4D6AF624F7193700B656BE /* verifyReceiptSample1.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2DDE559A24C8B5E300DCB087 /* verifyReceiptSample1.txt */; }; 2D4D6AF724F7193700B656BE /* base64encodedreceiptsample1.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2DDE559B24C8B5E300DCB087 /* base64encodedreceiptsample1.txt */; }; 2D4E926526990AB1000E10B0 /* StoreKitWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4E926426990AB1000E10B0 /* StoreKitWrapper.swift */; }; - 2D80736A268A691A0072284E /* MockProductsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C9439E087F63ECC4F59 /* MockProductsManager.swift */; }; - 2D84458926B9CD270033B5A3 /* ReceiptFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D84458826B9CD270033B5A3 /* ReceiptFetcherTests.swift */; }; - 2D8E9D482523747D00AFEE11 /* DictionaryExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD269162522A20A006AC4BC /* DictionaryExtensionsTests.swift */; }; 2D991ACA268BA56900085481 /* StoreKitRequestFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D991AC9268BA56900085481 /* StoreKitRequestFetcher.swift */; }; - 2D991ACC268BBCD600085481 /* MockRequestFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35609E46E869675A466C1 /* MockRequestFetcher.swift */; }; - 2D991ACD268BBE8600085481 /* MockRequestFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35609E46E869675A466C1 /* MockRequestFetcher.swift */; }; 2D9F4A5526C30CA800B07B43 /* PurchasesOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9F4A5426C30CA800B07B43 /* PurchasesOrchestrator.swift */; }; 2DC19195255F36D10039389A /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DC19194255F36D10039389A /* Logger.swift */; }; 2DC5622624EC63430031F69B /* PurchasesCoreSwift.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC5621824EC63430031F69B /* PurchasesCoreSwift.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2DC5622E24EC636C0031F69B /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E355CBB3F3A31A32687B14 /* Transaction.swift */; }; 2DC5623024EC63730031F69B /* OperationDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DDA3E4624DB0B5400EDFE5B /* OperationDispatcher.swift */; }; 2DC5623224EC63730031F69B /* TransactionsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3597020F24BF6A710010506E /* TransactionsFactory.swift */; }; - 2DC5623724EC68090031F69B /* TransactionsFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3597021124BF6AAC0010506E /* TransactionsFactoryTests.swift */; }; - 2DCCC68D26BB38E500E61E6D /* AttributionPosterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E354FE32DD3EA3FF3ECD0A /* AttributionPosterTests.swift */; }; - 2DD7BA4D24C63A830066B4C2 /* MockSystemInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD7BA4C24C63A830066B4C2 /* MockSystemInfo.swift */; }; - 2DDA3E4824DB101C00EDFE5B /* MockOperationDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35659EB530A5109AFAB50 /* MockOperationDispatcher.swift */; }; 2DDF419624F6F331005BC22D /* ProductsRequestFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35E8DCF998D9DB63850F8 /* ProductsRequestFactory.swift */; }; 2DDF419724F6F331005BC22D /* DateExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3567189CF6A746EE3CCC2 /* DateExtensions.swift */; }; 2DDF419D24F6F331005BC22D /* IntroEligibilityCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D97458E24BDFCEF006245E9 /* IntroEligibilityCalculator.swift */; }; @@ -64,7 +50,6 @@ 2DDF41CE24F6F4C3005BC22D /* InAppPurchaseBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DDF41C524F6F4C3005BC22D /* InAppPurchaseBuilderTests.swift */; }; 2DDF41CF24F6F4C3005BC22D /* ReceiptParsing+TestsWithRealReceipts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DDF41C724F6F4C3005BC22D /* ReceiptParsing+TestsWithRealReceipts.swift */; }; 2DDF41DA24F6F4DB005BC22D /* ReceiptParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351D0EBC4698E1D3585A6 /* ReceiptParserTests.swift */; }; - 2DDF41DC24F6F4DB005BC22D /* ProductsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351F0E21361EAEC078A0D /* ProductsManagerTests.swift */; }; 2DDF41DE24F6F527005BC22D /* MockAppleReceiptBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C1554F296F7F1317747 /* MockAppleReceiptBuilder.swift */; }; 2DDF41DF24F6F527005BC22D /* MockProductsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C9439E087F63ECC4F59 /* MockProductsManager.swift */; }; 2DDF41E024F6F527005BC22D /* MockInAppPurchaseBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E355744D64075AA91342DE /* MockInAppPurchaseBuilder.swift */; }; @@ -87,29 +72,71 @@ 2DE20B9226409ECF004C597D /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DE20B9126409ECF004C597D /* StoreKit.framework */; }; 2DE61A84264190830021CEA0 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE61A83264190830021CEA0 /* Constants.swift */; }; 2DE63BB324EC73F3001288D6 /* PurchasesCoreSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC5621624EC63420031F69B /* PurchasesCoreSwift.framework */; }; - 2DEB976B247DB85400A92099 /* SKProductSubscriptionDurationExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DEB976A247DB85400A92099 /* SKProductSubscriptionDurationExtensions.swift */; }; + 351B513B26D448F400BD2BD7 /* AttributionPosterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E354FE32DD3EA3FF3ECD0A /* AttributionPosterTests.swift */; }; + 351B513D26D4491E00BD2BD7 /* MockDeviceCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B513C26D4491E00BD2BD7 /* MockDeviceCache.swift */; }; + 351B513F26D4496000BD2BD7 /* MockIdentityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B513E26D4496000BD2BD7 /* MockIdentityManager.swift */; }; + 351B514126D4498F00BD2BD7 /* MockBackend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514026D4498F00BD2BD7 /* MockBackend.swift */; }; + 351B514326D449C100BD2BD7 /* MockSubscriberAttributesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514226D449C100BD2BD7 /* MockSubscriberAttributesManager.swift */; }; + 351B514526D449E600BD2BD7 /* MockAttributionTypeFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514426D449E600BD2BD7 /* MockAttributionTypeFactory.swift */; }; + 351B514726D44A0D00BD2BD7 /* MockSystemInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514626D44A0D00BD2BD7 /* MockSystemInfo.swift */; }; + 351B514926D44A2F00BD2BD7 /* MockPurchaserInfoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514826D44A2F00BD2BD7 /* MockPurchaserInfoManager.swift */; }; + 351B514B26D44A4A00BD2BD7 /* MockOperationDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514A26D44A4A00BD2BD7 /* MockOperationDispatcher.swift */; }; + 351B514D26D44A8600BD2BD7 /* MockHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B514C26D44A8600BD2BD7 /* MockHTTPClient.swift */; }; + 351B514E26D44ACE00BD2BD7 /* SubscriberAttributesManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3567E972B9B04FE079ABA /* SubscriberAttributesManagerTests.swift */; }; + 351B514F26D44ACE00BD2BD7 /* PurchasesSubscriberAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3508E52201122137D4B4A /* PurchasesSubscriberAttributesTests.swift */; }; + 351B515026D44ACE00BD2BD7 /* BackendSubscriberAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357F69438004E1F443C03 /* BackendSubscriberAttributesTests.swift */; }; + 351B515226D44AF000BD2BD7 /* MockReceiptFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515126D44AF000BD2BD7 /* MockReceiptFetcher.swift */; }; + 351B515426D44B0A00BD2BD7 /* MockStoreKitWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515326D44B0A00BD2BD7 /* MockStoreKitWrapper.swift */; }; + 351B515626D44B2300BD2BD7 /* MockNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515526D44B2300BD2BD7 /* MockNotificationCenter.swift */; }; + 351B515826D44B3E00BD2BD7 /* MockOfferingsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515726D44B3E00BD2BD7 /* MockOfferingsFactory.swift */; }; + 351B515A26D44B6200BD2BD7 /* MockAttributionFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515926D44B6200BD2BD7 /* MockAttributionFetcher.swift */; }; + 351B515C26D44B7900BD2BD7 /* MockIntroEligibilityCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515B26D44B7900BD2BD7 /* MockIntroEligibilityCalculator.swift */; }; + 351B515E26D44B9900BD2BD7 /* MockPurchasesDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515D26D44B9900BD2BD7 /* MockPurchasesDelegate.swift */; }; + 351B516026D44BB600BD2BD7 /* MockAttributionDataMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B515F26D44BB600BD2BD7 /* MockAttributionDataMigrator.swift */; }; + 351B516126D44BEB00BD2BD7 /* IdentityManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35294EBC1E5A879C95540 /* IdentityManagerTests.swift */; }; + 351B516226D44BEE00BD2BD7 /* PurchaserInfoManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35E992F1916C7F3911E7B /* PurchaserInfoManagerTests.swift */; }; + 351B516426D44C1F00BD2BD7 /* ObjCThrowExceptionMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B516326D44C1F00BD2BD7 /* ObjCThrowExceptionMatcher.swift */; }; + 351B516726D44C3700BD2BD7 /* RCObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 351B516626D44C3700BD2BD7 /* RCObjC.m */; }; + 351B516926D44C9500BD2BD7 /* BackendTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E358BF58C99AC39073B96C /* BackendTests.swift */; }; + 351B516A26D44CB300BD2BD7 /* ISOPeriodFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35B9AC7A350CA2437049D /* ISOPeriodFormatterTests.swift */; }; + 351B517026D44E8D00BD2BD7 /* MockDateProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B516F26D44E8D00BD2BD7 /* MockDateProvider.swift */; }; + 351B517226D44EF300BD2BD7 /* MockInMemoryCachedOfferings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B517126D44EF300BD2BD7 /* MockInMemoryCachedOfferings.swift */; }; + 351B517426D44F4B00BD2BD7 /* MockPaymentDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B517326D44F4B00BD2BD7 /* MockPaymentDiscount.swift */; }; + 351B517626D44F7200BD2BD7 /* MockProductDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B517526D44F7200BD2BD7 /* MockProductDiscount.swift */; }; + 351B517A26D44FF000BD2BD7 /* MockRequestFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351B517926D44FF000BD2BD7 /* MockRequestFetcher.swift */; }; + 351B519F26D4508A00BD2BD7 /* DeviceCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35D87B7E6F91E27E98F42 /* DeviceCacheTests.swift */; }; + 351B51A326D450BC00BD2BD7 /* DictionaryExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD269162522A20A006AC4BC /* DictionaryExtensionsTests.swift */; }; + 351B51A426D450BC00BD2BD7 /* NSError+RCExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E353AF2CAD3CEDE6D9B368 /* NSError+RCExtensionsTests.swift */; }; + 351B51A526D450BC00BD2BD7 /* NSDate+RCExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3508EC20EEBAB4EAC4C82 /* NSDate+RCExtensionsTests.swift */; }; + 351B51A726D450D400BD2BD7 /* SystemInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35EEE7783629CDE41B70C /* SystemInfoTests.swift */; }; + 351B51B526D450E800BD2BD7 /* ProductsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351F0E21361EAEC078A0D /* ProductsManagerTests.swift */; }; + 351B51B626D450E800BD2BD7 /* ReceiptFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D84458826B9CD270033B5A3 /* ReceiptFetcherTests.swift */; }; + 351B51B726D450E800BD2BD7 /* RCIntroEligibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD02D5624AD0B0500419CD9 /* RCIntroEligibilityTests.swift */; }; + 351B51B826D450E800BD2BD7 /* StoreKitWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E352F86A0A8EB05BAD77C4 /* StoreKitWrapperTests.swift */; }; + 351B51B926D450E800BD2BD7 /* TransactionsFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3597021124BF6AAC0010506E /* TransactionsFactoryTests.swift */; }; + 351B51BA26D450E800BD2BD7 /* ProductInfoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3583675928C01D92E3166 /* ProductInfoExtensions.swift */; }; + 351B51BB26D450E800BD2BD7 /* ProductInfoExtractorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3548189DA008320B3FC98 /* ProductInfoExtractorTests.swift */; }; + 351B51BC26D450E800BD2BD7 /* OfferingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357C2D977BBB081216B5F /* OfferingsTests.swift */; }; + 351B51BD26D450E800BD2BD7 /* EntitlementInfosTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3582920E16E065502E5FC /* EntitlementInfosTests.swift */; }; + 351B51BE26D450E800BD2BD7 /* PurchaserInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E359D8F304C83184560135 /* PurchaserInfoTests.swift */; }; + 351B51BF26D450E800BD2BD7 /* StoreKitRequestFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE4244269676E200254A30 /* StoreKitRequestFetcherTests.swift */; }; + 351B51C026D450E800BD2BD7 /* PurchasesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35DE5707E845DA3FF51BC /* PurchasesTests.swift */; }; + 351B51C126D450E800BD2BD7 /* OfferingsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F575859126C08E3F00C12B97 /* OfferingsManagerTests.swift */; }; + 351B51C226D450E800BD2BD7 /* ProductInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E350E57B0A393455A72B40 /* ProductInfoTests.swift */; }; + 351B51C326D450F200BD2BD7 /* InMemoryCachedObjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35E3250FBBB03D92E06EC /* InMemoryCachedObjectTests.swift */; }; 35262A0F1F7C4B9100C04F2C /* Purchases.h in Headers */ = {isa = PBXBuildFile; fileRef = 35262A011F7C4B9100C04F2C /* Purchases.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35262A231F7D77E600C04F2C /* Purchases.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 352629FE1F7C4B9100C04F2C /* Purchases.framework */; }; 35272E1B26D0029300F22C3B /* DeviceCacheSubscriberAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C4A795A0F056381A1B3 /* DeviceCacheSubscriberAttributesTests.swift */; }; - 35272E1E26D003CB00F22C3B /* PurchaserInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E359D8F304C83184560135 /* PurchaserInfoTests.swift */; }; - 35272E1F26D003F500F22C3B /* OfferingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357C2D977BBB081216B5F /* OfferingsTests.swift */; }; - 35272E2026D0042A00F22C3B /* RCIntroEligibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD02D5624AD0B0500419CD9 /* RCIntroEligibilityTests.swift */; }; - 35272E2126D0042A00F22C3B /* EntitlementInfosTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3582920E16E065502E5FC /* EntitlementInfosTests.swift */; }; 35272E2226D0048D00F22C3B /* HTTPClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E353CBE9CF2572A72A347F /* HTTPClientTests.swift */; }; 354895D4267AE4B4001DC5B1 /* AttributionKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354895D3267AE4B4001DC5B1 /* AttributionKey.swift */; }; 354895D6267BEDE3001DC5B1 /* SpecialSubscriberAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354895D5267BEDE3001DC5B1 /* SpecialSubscriberAttributes.swift */; }; 35549323269E298B005F9AE9 /* OfferingsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35549322269E298B005F9AE9 /* OfferingsFactory.swift */; }; - 356D65F620B873AF00576D45 /* Purchases.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 352629FE1F7C4B9100C04F2C /* Purchases.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 35D0E5D026A5886C0099EAD8 /* ErrorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D0E5CF26A5886C0099EAD8 /* ErrorUtils.swift */; }; - 35D5DE05268FABFD002B2DBA /* MockAttributionDataMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D5DE04268FABFD002B2DBA /* MockAttributionDataMigrator.swift */; }; 35D832CD262A5B7500E60AC5 /* ETagManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D832CC262A5B7500E60AC5 /* ETagManager.swift */; }; 35D832D2262E56DB00E60AC5 /* HTTPStatusCodes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D832D1262E56DB00E60AC5 /* HTTPStatusCodes.swift */; }; 35D832F4262E606500E60AC5 /* HTTPResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D832F3262E606500E60AC5 /* HTTPResponse.swift */; }; 35D83300262FAD8000E60AC5 /* ETagManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D832FF262FAD8000E60AC5 /* ETagManagerTests.swift */; }; 35D8330A262FBA9A00E60AC5 /* MockUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357D16038F07915D7825D /* MockUserDefaults.swift */; }; 35D83312262FBD4200E60AC5 /* MockETagManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D83311262FBD4200E60AC5 /* MockETagManager.swift */; }; - 35D83317262FC21400E60AC5 /* MockETagManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D83316262FC21400E60AC5 /* MockETagManager.swift */; }; - 35D8331C262FC23100E60AC5 /* MockUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35D8331B262FC23100E60AC5 /* MockUserDefaults.swift */; }; 35F6FD62267426D600ABCB53 /* ETagAndResponseWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F6FD61267426D600ABCB53 /* ETagAndResponseWrapper.swift */; }; 35F82BA926A849100051DF03 /* RCPurchasesErrorUtilsAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 35F82BA726A849080051DF03 /* RCPurchasesErrorUtilsAPI.m */; }; 35F82BAB26A84E130051DF03 /* Dictionary+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F82BAA26A84E130051DF03 /* Dictionary+Extensions.swift */; }; @@ -117,41 +144,10 @@ 35F82BB426A9A74D0051DF03 /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F82BB326A9A74D0051DF03 /* HTTPClient.swift */; }; 35F82BB626A9B8040051DF03 /* AttributionDataMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F82BB526A9B8030051DF03 /* AttributionDataMigrator.swift */; }; 37E350C67712B9E054FEF297 /* AttributionData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35CD16BB73BB091E64D9A /* AttributionData.swift */; }; - 37E351A24D613F0DFE6AF05F /* MockBackend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35645928A0009F4C105A7 /* MockBackend.swift */; }; - 37E351AB03EE37534CA10B59 /* MockInMemoryCachedOfferings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35C5A65AAF701DED59800 /* MockInMemoryCachedOfferings.swift */; }; - 37E351E3AC0B5F67305B4CB6 /* DeviceCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35D87B7E6F91E27E98F42 /* DeviceCacheTests.swift */; }; - 37E3524628A1D7568679FEE2 /* SubscriberAttributesManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3567E972B9B04FE079ABA /* SubscriberAttributesManagerTests.swift */; }; - 37E3524CB70618E6C5F3DB49 /* MockPurchasesDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35838A7FD36982EE14100 /* MockPurchasesDelegate.swift */; }; - 37E352897F7CB3A122F9739F /* PurchasesSubscriberAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3508E52201122137D4B4A /* PurchasesSubscriberAttributesTests.swift */; }; 37E3529267833EA8ED9F06BE /* DateFormatter+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E353FD94A8FD5CD8796530 /* DateFormatter+Extensions.swift */; }; 37E352973B0901E3CAA717E1 /* DateFormatter+ExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35FDA0A44EA03EA12DAA2 /* DateFormatter+ExtensionsTests.swift */; }; - 37E353851D42047D5B0A57D0 /* MockDateProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3578BD602C7B8E2274279 /* MockDateProvider.swift */; }; - 37E35398FCB4931573C56CAF /* MockReceiptFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E352B11676F7DC51559E84 /* MockReceiptFetcher.swift */; }; - 37E354BE25CE61E55E4FD89C /* MockDeviceCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E354BEB8FDE39CAB7C4D69 /* MockDeviceCache.swift */; }; - 37E354C46A8A3C2DC861C224 /* MockHTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35292137BBF2810CE4F4B /* MockHTTPClient.swift */; }; - 37E354E0A9A371481540B2B0 /* MockAttributionFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351CD1EE6B897F434EA40 /* MockAttributionFetcher.swift */; }; - 37E3554836D4DA9336B9FA70 /* MockProductDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3572040A16F10B957563A /* MockProductDiscount.swift */; }; - 37E3555F3FB596CAB8F46868 /* BackendTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E358BF58C99AC39073B96C /* BackendTests.swift */; }; - 37E356538C6A9A05887CAE12 /* NSError+RCExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E353AF2CAD3CEDE6D9B368 /* NSError+RCExtensionsTests.swift */; }; 37E3578711F5FDD5DC6458A8 /* AttributionFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3521731D8DC16873F55F3 /* AttributionFetcher.swift */; }; - 37E357E33F0E20D92EE6372E /* MockSKProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357FBA3184BDE6E95DED4 /* MockSKProduct.swift */; }; - 37E3595F797614307CBA329A /* StoreKitWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E352F86A0A8EB05BAD77C4 /* StoreKitWrapperTests.swift */; }; - 37E3599326581376E0142EEC /* SystemInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35EEE7783629CDE41B70C /* SystemInfoTests.swift */; }; - 37E359E815ECBE0B9074FA19 /* NSDate+RCExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3508EC20EEBAB4EAC4C82 /* NSDate+RCExtensionsTests.swift */; }; - 37E359F038FEA41F207662A5 /* MockPurchaserInfoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35EBCDDD1A08F8105C46C /* MockPurchaserInfoManager.swift */; }; - 37E35A37D97E9E2B0CA09300 /* ISOPeriodFormatterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35B9AC7A350CA2437049D /* ISOPeriodFormatterTests.swift */; }; - 37E35AD0B0D9EF0CDA29DAC2 /* MockStoreKitWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351AC0FF9607719F7A29A /* MockStoreKitWrapper.swift */; }; - 37E35AF213F2F79CB067FDC2 /* InMemoryCachedObjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35E3250FBBB03D92E06EC /* InMemoryCachedObjectTests.swift */; }; - 37E35B1F34D1624509012749 /* MockSubscriberAttributesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E351D48260D9DC8B1EE360 /* MockSubscriberAttributesManager.swift */; }; 37E35C8515C5E2D01B0AF5C1 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3507939634ED5A9280544 /* Strings.swift */; }; - 37E35D6F8CF6DFB88F0A2F61 /* PurchaserInfoManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35E992F1916C7F3911E7B /* PurchaserInfoManagerTests.swift */; }; - 37E35DD380900220C34BB222 /* MockTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3550C031F1FD95B366998 /* MockTransaction.swift */; }; - 37E35EB7B35C86140B96C58B /* MockIdentityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3571B552018D47A6ED7C6 /* MockIdentityManager.swift */; }; - 37E35EBDFC5CD3068E1792A3 /* MockNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35A0D4A561C51185F82EB /* MockNotificationCenter.swift */; }; - 37E35EDC57C486AC2D66B4B8 /* MockOfferingsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3555B4BE0A4F7222E7B00 /* MockOfferingsFactory.swift */; }; - 37E35F549AEB655AB6DA83B3 /* MockSKDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35EABF6D7AFE367718784 /* MockSKDiscount.swift */; }; - 37E35F67255A87BD86B39D43 /* MockReceiptParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3558F697A939D2BBD7FEC /* MockReceiptParser.swift */; }; - 37E35FF7952D59C0AE3879D3 /* IdentityManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35294EBC1E5A879C95540 /* IdentityManagerTests.swift */; }; 80E80EF226970E04008F245A /* ReceiptFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80E80EF026970DC3008F245A /* ReceiptFetcher.swift */; }; 9A65DFDE258AD60A00DE00B0 /* LogIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A65DFDD258AD60A00DE00B0 /* LogIntent.swift */; }; 9A65E03625918B0500DE00B0 /* ConfigureStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A65E03525918B0500DE00B0 /* ConfigureStrings.swift */; }; @@ -175,13 +171,10 @@ B319514B26C1991E002CA9AC /* base64EncodedReceiptSampleForDataExtension.txt in Resources */ = {isa = PBXBuildFile; fileRef = B319514A26C1991E002CA9AC /* base64EncodedReceiptSampleForDataExtension.txt */; }; B32B74FF26868AEB005647BF /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D3C4712685784800CB3C21 /* Package.swift */; }; B32B750126868C1D005647BF /* EntitlementInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B32B750026868C1D005647BF /* EntitlementInfo.swift */; }; - B33C43EF267295E2006B8C8C /* RCObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = B33C43EC2672953D006B8C8C /* RCObjC.m */; }; - B33C43F22672986D006B8C8C /* ObjCThrowExceptionMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33C43F12672986D006B8C8C /* ObjCThrowExceptionMatcher.swift */; }; B33CEA9E268BC39D008A3144 /* RCTransactionAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = B33CEA9D268BC39D008A3144 /* RCTransactionAPI.m */; }; B33CEAA0268CDCC9008A3144 /* ISOPeriodFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33CEA9F268CDCC9008A3144 /* ISOPeriodFormatter.swift */; }; B34D2AA0269606E400D88C3A /* IntroEligibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3DF6A4F269524080030D57C /* IntroEligibility.swift */; }; B34D2AA126960A3200D88C3A /* RCIntroEligibilityAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = B3DF6A4D269522040030D57C /* RCIntroEligibilityAPI.m */; }; - B34D2AA4269649EC00D88C3A /* MockProductDiscount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3572040A16F10B957563A /* MockProductDiscount.swift */; }; B34D2AA626976FC700D88C3A /* ErrorCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34D2AA526976FC700D88C3A /* ErrorCode.swift */; }; B35042C426CDB79A00905B95 /* Purchases.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35042C326CDB79A00905B95 /* Purchases.swift */; }; B35042C626CDD3B100905B95 /* PurchasesDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35042C526CDD3B100905B95 /* PurchasesDelegate.swift */; }; @@ -189,8 +182,6 @@ B35F9E0926B4BEED00095C3F /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35F9E0826B4BEED00095C3F /* String+Extensions.swift */; }; B36824BE268FBC5B00957E4C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B36824BD268FBC5B00957E4C /* XCTest.framework */; }; B36824BF268FBC8700957E4C /* SubscriberAttributeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8DB34A24072AAE00BE3D31 /* SubscriberAttributeTests.swift */; }; - B36824C1268FBCE000957E4C /* MockDateProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3578BD602C7B8E2274279 /* MockDateProvider.swift */; }; - B36824C3268FBE1500957E4C /* BackendSubscriberAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E357F69438004E1F443C03 /* BackendSubscriberAttributesTests.swift */; }; B372EC54268FEDC60099171E /* PromotionalOffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B372EC53268FEDC60099171E /* PromotionalOffer.swift */; }; B372EC56268FEF020099171E /* ProductInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B372EC55268FEF020099171E /* ProductInfo.swift */; }; B3766F1E26BDA95100141450 /* IntroEligibilityResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3766F1D26BDA95100141450 /* IntroEligibilityResponse.swift */; }; @@ -212,30 +203,19 @@ B3B5FBBF269E081E00104A0C /* InMemoryCachedObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B5FBBE269E081E00104A0C /* InMemoryCachedObject.swift */; }; B3B5FBC1269E17CE00104A0C /* DeviceCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B5FBC0269E17CE00104A0C /* DeviceCache.swift */; }; B3C1AEFA268FF4DB0013D50D /* ProductInfoEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C1AEF9268FF4DB0013D50D /* ProductInfoEnums.swift */; }; - B3C1AEFB268FF7210013D50D /* ProductInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E350E57B0A393455A72B40 /* ProductInfoTests.swift */; }; B3C4AAD526B8911300E1B3C8 /* Backend.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3C4AAD426B8911300E1B3C8 /* Backend.swift */; }; B3D3C47026856AFF00CB3C21 /* APITester.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D3C46F26856AFF00CB3C21 /* APITester.swift */; }; - B3D5CFBD267282630056FA67 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFBC267282630056FA67 /* Nimble */; }; - B3D5CFC0267282760056FA67 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFBF267282760056FA67 /* OHHTTPStubsSwift */; }; - B3D5CFC2267282760056FA67 /* OHHTTPStubs in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFC1267282760056FA67 /* OHHTTPStubs */; }; B3D5CFC42672827D0056FA67 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFC32672827D0056FA67 /* Nimble */; }; B3D5CFC62672827D0056FA67 /* OHHTTPStubs in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFC52672827D0056FA67 /* OHHTTPStubs */; }; B3D5CFC82672827D0056FA67 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFC72672827D0056FA67 /* OHHTTPStubsSwift */; }; B3D5CFCA267282860056FA67 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = B3D5CFC9267282860056FA67 /* Nimble */; }; B3DDB55926854865008CCF23 /* PurchaseOwnershipType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3DDB55826854865008CCF23 /* PurchaseOwnershipType.swift */; }; - B3DF6A452694DCBA0030D57C /* PurchasesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E35DE5707E845DA3FF51BC /* PurchasesTests.swift */; }; - B3DF6A46269512690030D57C /* ProductInfoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3583675928C01D92E3166 /* ProductInfoExtensions.swift */; }; - B3DF6A472695145E0030D57C /* ProductInfoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3583675928C01D92E3166 /* ProductInfoExtensions.swift */; }; B3E26A4A26BE0A8E003ACCF3 /* Error+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E26A4926BE0A8E003ACCF3 /* Error+Extensions.swift */; }; F575858D26C088FE00C12B97 /* OfferingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F575858C26C088FE00C12B97 /* OfferingsManager.swift */; }; F575858F26C0893600C12B97 /* MockOfferingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F575858E26C0893600C12B97 /* MockOfferingsManager.swift */; }; - F575859026C0893E00C12B97 /* MockOfferingsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F575858E26C0893600C12B97 /* MockOfferingsManager.swift */; }; - F575859226C08E3F00C12B97 /* OfferingsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F575859126C08E3F00C12B97 /* OfferingsManagerTests.swift */; }; F591492826B9956C00D32E58 /* MockTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = F591492726B9956C00D32E58 /* MockTransaction.swift */; }; F5BE424026962ACF00254A30 /* ReceiptRefreshPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE423F26962ACF00254A30 /* ReceiptRefreshPolicy.swift */; }; F5BE424226965F9F00254A30 /* ProductInfoExtractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE424126965F9F00254A30 /* ProductInfoExtractor.swift */; }; - F5BE424326966B0000254A30 /* ProductInfoExtractorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E3548189DA008320B3FC98 /* ProductInfoExtractorTests.swift */; }; - F5BE4245269676E200254A30 /* StoreKitRequestFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE4244269676E200254A30 /* StoreKitRequestFetcherTests.swift */; }; F5BE443D26977F9B00254A30 /* HTTPRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE443C26977F9B00254A30 /* HTTPRequest.swift */; }; F5BE44432698581100254A30 /* AttributionTypeFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BE44422698581100254A30 /* AttributionTypeFactory.swift */; }; F5BE444726985E7B00254A30 /* AttributionTypeFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E350420D54B99BB39448E0 /* AttributionTypeFactoryTests.swift */; }; @@ -267,13 +247,6 @@ remoteGlobalIDString = 2DE20B7E26409EB7004C597D; remoteInfo = StoreKitTestApp; }; - 35DFC68220B8757C004584CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 352629F51F7C4B9100C04F2C /* Project object */; - proxyType = 1; - remoteGlobalIDString = 352629FD1F7C4B9100C04F2C; - remoteInfo = Purchases; - }; B387F48726840B7F0028701F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 352629F51F7C4B9100C04F2C /* Project object */; @@ -284,17 +257,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 350FBDD91F7DFD900065833D /* Copy Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 356D65F620B873AF00576D45 /* Purchases.framework in Copy Frameworks */, - ); - name = "Copy Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; B387F4712683FDDB0028701F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -313,9 +275,7 @@ 2CD72947268A828400BFC976 /* Locale+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Locale+Extensions.swift"; sourceTree = ""; }; 2D11F5E0250FF886005A70E8 /* AttributionStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributionStrings.swift; sourceTree = ""; }; 2D1C3F3826B9D8B800112626 /* MockBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockBundle.swift; sourceTree = ""; }; - 2D390254259CF46000DB19C0 /* MockPaymentDiscount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPaymentDiscount.swift; sourceTree = ""; }; 2D4C18A824F47E4400F268CD /* Purchases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Purchases.swift; sourceTree = ""; }; - 2D4D6AF224F7172900B656BE /* MockProductsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockProductsRequest.swift; sourceTree = ""; }; 2D4E926426990AB1000E10B0 /* StoreKitWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreKitWrapper.swift; sourceTree = ""; }; 2D5BB46A24C8E8ED00E27537 /* ReceiptParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiptParser.swift; sourceTree = ""; }; 2D84458826B9CD270033B5A3 /* ReceiptFetcherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiptFetcherTests.swift; sourceTree = ""; }; @@ -324,7 +284,6 @@ 2D97458E24BDFCEF006245E9 /* IntroEligibilityCalculator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntroEligibilityCalculator.swift; sourceTree = ""; }; 2D991AC9268BA56900085481 /* StoreKitRequestFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreKitRequestFetcher.swift; sourceTree = ""; }; 2D9F4A5426C30CA800B07B43 /* PurchasesOrchestrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchasesOrchestrator.swift; sourceTree = ""; }; - 2DA0068E24E2E515002C59D3 /* MockIntroEligibilityCalculator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockIntroEligibilityCalculator.swift; sourceTree = ""; }; 2DBB3E10269C9B8700BBF431 /* SwiftStyleGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftStyleGuide.swift; sourceTree = ""; }; 2DC19194255F36D10039389A /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; 2DC5621624EC63420031F69B /* PurchasesCoreSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PurchasesCoreSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -334,7 +293,6 @@ 2DC5622524EC63430031F69B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2DD02D5624AD0B0500419CD9 /* RCIntroEligibilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RCIntroEligibilityTests.swift; sourceTree = ""; }; 2DD269162522A20A006AC4BC /* DictionaryExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DictionaryExtensionsTests.swift; sourceTree = ""; }; - 2DD7BA4C24C63A830066B4C2 /* MockSystemInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSystemInfo.swift; sourceTree = ""; }; 2DDA3E4624DB0B5400EDFE5B /* OperationDispatcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationDispatcher.swift; sourceTree = ""; }; 2DDE559A24C8B5E300DCB087 /* verifyReceiptSample1.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = verifyReceiptSample1.txt; sourceTree = ""; }; 2DDE559B24C8B5E300DCB087 /* base64encodedreceiptsample1.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = base64encodedreceiptsample1.txt; sourceTree = ""; }; @@ -371,18 +329,38 @@ 2DE20B8A26409EB8004C597D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2DE20B9126409ECF004C597D /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/iOSSupport/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; 2DE61A83264190830021CEA0 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - 2DEB976A247DB85400A92099 /* SKProductSubscriptionDurationExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SKProductSubscriptionDurationExtensions.swift; sourceTree = ""; }; 2DEC0CFB24A2A1B100B0E5BB /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; }; 33FFC8744F2BAE7BD8889A4C /* Pods_Purchases.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Purchases.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 350A1B84226E3E8700CCA10F /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 350FBDD71F7DF17F0065833D /* OHHTTPStubs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OHHTTPStubs.framework; path = Carthage/Build/iOS/OHHTTPStubs.framework; sourceTree = SOURCE_ROOT; }; - 350FBDDC1F7EA3570065833D /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/iOS/Nimble.framework; sourceTree = SOURCE_ROOT; }; + 351B513C26D4491E00BD2BD7 /* MockDeviceCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockDeviceCache.swift; sourceTree = ""; }; + 351B513E26D4496000BD2BD7 /* MockIdentityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockIdentityManager.swift; sourceTree = ""; }; + 351B514026D4498F00BD2BD7 /* MockBackend.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockBackend.swift; sourceTree = ""; }; + 351B514226D449C100BD2BD7 /* MockSubscriberAttributesManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSubscriberAttributesManager.swift; sourceTree = ""; }; + 351B514426D449E600BD2BD7 /* MockAttributionTypeFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAttributionTypeFactory.swift; sourceTree = ""; }; + 351B514626D44A0D00BD2BD7 /* MockSystemInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSystemInfo.swift; sourceTree = ""; }; + 351B514826D44A2F00BD2BD7 /* MockPurchaserInfoManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPurchaserInfoManager.swift; sourceTree = ""; }; + 351B514A26D44A4A00BD2BD7 /* MockOperationDispatcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockOperationDispatcher.swift; sourceTree = ""; }; + 351B514C26D44A8600BD2BD7 /* MockHTTPClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockHTTPClient.swift; sourceTree = ""; }; + 351B515126D44AF000BD2BD7 /* MockReceiptFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockReceiptFetcher.swift; sourceTree = ""; }; + 351B515326D44B0A00BD2BD7 /* MockStoreKitWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockStoreKitWrapper.swift; sourceTree = ""; }; + 351B515526D44B2300BD2BD7 /* MockNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockNotificationCenter.swift; sourceTree = ""; }; + 351B515726D44B3E00BD2BD7 /* MockOfferingsFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockOfferingsFactory.swift; sourceTree = ""; }; + 351B515926D44B6200BD2BD7 /* MockAttributionFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAttributionFetcher.swift; sourceTree = ""; }; + 351B515B26D44B7900BD2BD7 /* MockIntroEligibilityCalculator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockIntroEligibilityCalculator.swift; sourceTree = ""; }; + 351B515D26D44B9900BD2BD7 /* MockPurchasesDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPurchasesDelegate.swift; sourceTree = ""; }; + 351B515F26D44BB600BD2BD7 /* MockAttributionDataMigrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAttributionDataMigrator.swift; sourceTree = ""; }; + 351B516326D44C1F00BD2BD7 /* ObjCThrowExceptionMatcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjCThrowExceptionMatcher.swift; sourceTree = ""; }; + 351B516526D44C3600BD2BD7 /* PurchasesCoreSwiftTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PurchasesCoreSwiftTests-Bridging-Header.h"; sourceTree = ""; }; + 351B516626D44C3700BD2BD7 /* RCObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCObjC.m; sourceTree = ""; }; + 351B516826D44C4F00BD2BD7 /* RCObjC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCObjC.h; sourceTree = ""; }; + 351B516F26D44E8D00BD2BD7 /* MockDateProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockDateProvider.swift; sourceTree = ""; }; + 351B517126D44EF300BD2BD7 /* MockInMemoryCachedOfferings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockInMemoryCachedOfferings.swift; sourceTree = ""; }; + 351B517326D44F4B00BD2BD7 /* MockPaymentDiscount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPaymentDiscount.swift; sourceTree = ""; }; + 351B517526D44F7200BD2BD7 /* MockProductDiscount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockProductDiscount.swift; sourceTree = ""; }; + 351B517926D44FF000BD2BD7 /* MockRequestFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRequestFetcher.swift; sourceTree = ""; }; 352629FE1F7C4B9100C04F2C /* Purchases.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Purchases.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 35262A011F7C4B9100C04F2C /* Purchases.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Purchases.h; sourceTree = ""; }; 35262A021F7C4B9100C04F2C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 35262A1E1F7D77E600C04F2C /* PurchasesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PurchasesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 35262A221F7D77E600C04F2C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 35262A291F7D783F00C04F2C /* PurchasesTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PurchasesTests-Bridging-Header.h"; sourceTree = ""; }; 3530C18822653E8F00D6DF52 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 354895D1267AE383001DC5B1 /* AttributionDataMigrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributionDataMigrator.swift; sourceTree = ""; }; 354895D3267AE4B4001DC5B1 /* AttributionKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributionKey.swift; sourceTree = ""; }; @@ -392,14 +370,11 @@ 3597020F24BF6A710010506E /* TransactionsFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsFactory.swift; sourceTree = ""; }; 3597021124BF6AAC0010506E /* TransactionsFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionsFactoryTests.swift; sourceTree = ""; }; 35D0E5CF26A5886C0099EAD8 /* ErrorUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorUtils.swift; sourceTree = ""; }; - 35D5DE04268FABFD002B2DBA /* MockAttributionDataMigrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAttributionDataMigrator.swift; sourceTree = ""; }; 35D832CC262A5B7500E60AC5 /* ETagManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETagManager.swift; sourceTree = ""; }; 35D832D1262E56DB00E60AC5 /* HTTPStatusCodes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPStatusCodes.swift; sourceTree = ""; }; 35D832F3262E606500E60AC5 /* HTTPResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPResponse.swift; sourceTree = ""; }; 35D832FF262FAD8000E60AC5 /* ETagManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ETagManagerTests.swift; sourceTree = ""; }; 35D83311262FBD4200E60AC5 /* MockETagManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockETagManager.swift; sourceTree = ""; }; - 35D83316262FC21400E60AC5 /* MockETagManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockETagManager.swift; sourceTree = ""; }; - 35D8331B262FC23100E60AC5 /* MockUserDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUserDefaults.swift; sourceTree = ""; }; 35F6FD61267426D600ABCB53 /* ETagAndResponseWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETagAndResponseWrapper.swift; sourceTree = ""; }; 35F82BA526A848CB0051DF03 /* RCPurchasesErrorUtilsAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCPurchasesErrorUtilsAPI.h; sourceTree = ""; }; 35F82BA726A849080051DF03 /* RCPurchasesErrorUtilsAPI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCPurchasesErrorUtilsAPI.m; sourceTree = ""; }; @@ -415,16 +390,11 @@ 37E3508EC20EEBAB4EAC4C82 /* NSDate+RCExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSDate+RCExtensionsTests.swift"; sourceTree = ""; }; 37E35092F0E41512E0D610BA /* ContainerFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContainerFactory.swift; sourceTree = ""; }; 37E350E57B0A393455A72B40 /* ProductInfoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductInfoTests.swift; sourceTree = ""; }; - 37E351AC0FF9607719F7A29A /* MockStoreKitWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockStoreKitWrapper.swift; sourceTree = ""; }; - 37E351CD1EE6B897F434EA40 /* MockAttributionFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAttributionFetcher.swift; sourceTree = ""; }; 37E351D0EBC4698E1D3585A6 /* ReceiptParserTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReceiptParserTests.swift; sourceTree = ""; }; - 37E351D48260D9DC8B1EE360 /* MockSubscriberAttributesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockSubscriberAttributesManager.swift; sourceTree = ""; }; 37E351EB3689AF304E5B1031 /* MockASN1ContainerBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockASN1ContainerBuilder.swift; sourceTree = ""; }; 37E351F0E21361EAEC078A0D /* ProductsManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductsManagerTests.swift; sourceTree = ""; }; 37E3521731D8DC16873F55F3 /* AttributionFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttributionFetcher.swift; sourceTree = ""; }; - 37E35292137BBF2810CE4F4B /* MockHTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockHTTPClient.swift; sourceTree = ""; }; 37E35294EBC1E5A879C95540 /* IdentityManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentityManagerTests.swift; sourceTree = ""; }; - 37E352B11676F7DC51559E84 /* MockReceiptFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockReceiptFetcher.swift; sourceTree = ""; }; 37E352F86A0A8EB05BAD77C4 /* StoreKitWrapperTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreKitWrapperTests.swift; sourceTree = ""; }; 37E353AF2CAD3CEDE6D9B368 /* NSError+RCExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSError+RCExtensionsTests.swift"; sourceTree = ""; }; 37E353CBE9CF2572A72A347F /* HTTPClientTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClientTests.swift; sourceTree = ""; }; @@ -432,49 +402,32 @@ 37E3548189DA008320B3FC98 /* ProductInfoExtractorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductInfoExtractorTests.swift; sourceTree = ""; }; 37E354B13440508B46C9A530 /* MockReceiptParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockReceiptParser.swift; sourceTree = ""; }; 37E354B18710B488B8B0D443 /* IntroEligibilityCalculatorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntroEligibilityCalculatorTests.swift; sourceTree = ""; }; - 37E354BEB8FDE39CAB7C4D69 /* MockDeviceCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockDeviceCache.swift; sourceTree = ""; }; 37E354FE32DD3EA3FF3ECD0A /* AttributionPosterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttributionPosterTests.swift; sourceTree = ""; }; - 37E3550C031F1FD95B366998 /* MockTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockTransaction.swift; sourceTree = ""; }; - 37E3555B4BE0A4F7222E7B00 /* MockOfferingsFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockOfferingsFactory.swift; sourceTree = ""; }; 37E355744D64075AA91342DE /* MockInAppPurchaseBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockInAppPurchaseBuilder.swift; sourceTree = ""; }; - 37E3558F697A939D2BBD7FEC /* MockReceiptParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockReceiptParser.swift; sourceTree = ""; }; 37E355CBB3F3A31A32687B14 /* Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transaction.swift; sourceTree = ""; }; - 37E35609E46E869675A466C1 /* MockRequestFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockRequestFetcher.swift; sourceTree = ""; }; - 37E35645928A0009F4C105A7 /* MockBackend.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBackend.swift; sourceTree = ""; }; - 37E35659EB530A5109AFAB50 /* MockOperationDispatcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockOperationDispatcher.swift; sourceTree = ""; }; 37E3567189CF6A746EE3CCC2 /* DateExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateExtensions.swift; sourceTree = ""; }; 37E3567E972B9B04FE079ABA /* SubscriberAttributesManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriberAttributesManagerTests.swift; sourceTree = ""; }; - 37E3571B552018D47A6ED7C6 /* MockIdentityManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockIdentityManager.swift; sourceTree = ""; }; - 37E3572040A16F10B957563A /* MockProductDiscount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockProductDiscount.swift; sourceTree = ""; }; - 37E3578BD602C7B8E2274279 /* MockDateProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockDateProvider.swift; sourceTree = ""; }; 37E357C2D977BBB081216B5F /* OfferingsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OfferingsTests.swift; sourceTree = ""; }; 37E357D16038F07915D7825D /* MockUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockUserDefaults.swift; sourceTree = ""; }; 37E357F69438004E1F443C03 /* BackendSubscriberAttributesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackendSubscriberAttributesTests.swift; sourceTree = ""; }; - 37E357FBA3184BDE6E95DED4 /* MockSKProduct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockSKProduct.swift; sourceTree = ""; }; 37E3582920E16E065502E5FC /* EntitlementInfosTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntitlementInfosTests.swift; sourceTree = ""; }; 37E3583675928C01D92E3166 /* ProductInfoExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductInfoExtensions.swift; sourceTree = ""; }; - 37E35838A7FD36982EE14100 /* MockPurchasesDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPurchasesDelegate.swift; sourceTree = ""; }; 37E358BF58C99AC39073B96C /* BackendTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackendTests.swift; sourceTree = ""; }; 37E359D8F304C83184560135 /* PurchaserInfoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaserInfoTests.swift; sourceTree = ""; }; - 37E35A0D4A561C51185F82EB /* MockNotificationCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockNotificationCenter.swift; sourceTree = ""; }; 37E35ABEE9FD79CCA64E4F8B /* NSData+RCExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSData+RCExtensionsTests.swift"; sourceTree = ""; }; 37E35B08709090FBBFB16EBD /* MockProductsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockProductsRequest.swift; sourceTree = ""; }; 37E35B9AC7A350CA2437049D /* ISOPeriodFormatterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ISOPeriodFormatterTests.swift; sourceTree = ""; }; 37E35C1554F296F7F1317747 /* MockAppleReceiptBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAppleReceiptBuilder.swift; sourceTree = ""; }; 37E35C4A4B241A545D1D06BD /* ASN1ObjectIdentifierEncoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ASN1ObjectIdentifierEncoder.swift; sourceTree = ""; }; 37E35C4A795A0F056381A1B3 /* DeviceCacheSubscriberAttributesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceCacheSubscriberAttributesTests.swift; sourceTree = ""; }; - 37E35C5A65AAF701DED59800 /* MockInMemoryCachedOfferings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockInMemoryCachedOfferings.swift; sourceTree = ""; }; 37E35C7060D7E486F5958BED /* ProductsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductsManager.swift; sourceTree = ""; }; 37E35C9439E087F63ECC4F59 /* MockProductsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockProductsManager.swift; sourceTree = ""; }; 37E35CD16BB73BB091E64D9A /* AttributionData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttributionData.swift; sourceTree = ""; }; 37E35D87B7E6F91E27E98F42 /* DeviceCacheTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceCacheTests.swift; sourceTree = ""; }; - 37E35DA3E083FE37DAF15954 /* MockAttributionTypeFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAttributionTypeFactory.swift; sourceTree = ""; }; 37E35DE5707E845DA3FF51BC /* PurchasesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchasesTests.swift; sourceTree = ""; }; 37E35E3250FBBB03D92E06EC /* InMemoryCachedObjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InMemoryCachedObjectTests.swift; sourceTree = ""; }; 37E35E8DCF998D9DB63850F8 /* ProductsRequestFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductsRequestFactory.swift; sourceTree = ""; }; 37E35E992F1916C7F3911E7B /* PurchaserInfoManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaserInfoManagerTests.swift; sourceTree = ""; }; - 37E35EABF6D7AFE367718784 /* MockSKDiscount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockSKDiscount.swift; sourceTree = ""; }; - 37E35EBCDDD1A08F8105C46C /* MockPurchaserInfoManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockPurchaserInfoManager.swift; sourceTree = ""; }; 37E35EEE7783629CDE41B70C /* SystemInfoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SystemInfoTests.swift; sourceTree = ""; }; 37E35F783903362B65FB7AF3 /* MockProductsRequestFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockProductsRequestFactory.swift; sourceTree = ""; }; 37E35FDA0A44EA03EA12DAA2 /* DateFormatter+ExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DateFormatter+ExtensionsTests.swift"; sourceTree = ""; }; @@ -500,9 +453,6 @@ B3083A122699334C007B5503 /* Offering.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Offering.swift; sourceTree = ""; }; B319514A26C1991E002CA9AC /* base64EncodedReceiptSampleForDataExtension.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = base64EncodedReceiptSampleForDataExtension.txt; sourceTree = ""; }; B32B750026868C1D005647BF /* EntitlementInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntitlementInfo.swift; sourceTree = ""; }; - B33C43EB2672953D006B8C8C /* RCObjC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCObjC.h; sourceTree = ""; }; - B33C43EC2672953D006B8C8C /* RCObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCObjC.m; sourceTree = ""; }; - B33C43F12672986D006B8C8C /* ObjCThrowExceptionMatcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjCThrowExceptionMatcher.swift; sourceTree = ""; }; B33CEA9C268BC39D008A3144 /* RCTransactionAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTransactionAPI.h; sourceTree = ""; }; B33CEA9D268BC39D008A3144 /* RCTransactionAPI.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTransactionAPI.m; sourceTree = ""; }; B33CEA9F268CDCC9008A3144 /* ISOPeriodFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ISOPeriodFormatter.swift; sourceTree = ""; }; @@ -611,17 +561,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 35262A1B1F7D77E600C04F2C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 35262A231F7D77E600C04F2C /* Purchases.framework in Frameworks */, - B3D5CFC0267282760056FA67 /* OHHTTPStubsSwift in Frameworks */, - B3D5CFBD267282630056FA67 /* Nimble in Frameworks */, - B3D5CFC2267282760056FA67 /* OHHTTPStubs in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B387F4702683FDDB0028701F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -646,14 +585,6 @@ path = FoundationExtensions; sourceTree = ""; }; - 2D0B12ED26BC850100C26EAD /* Attribution */ = { - isa = PBXGroup; - children = ( - 37E354FE32DD3EA3FF3ECD0A /* AttributionPosterTests.swift */, - ); - path = Attribution; - sourceTree = ""; - }; 2D11F5DE250FF63E005A70E8 /* Logging */ = { isa = PBXGroup; children = ( @@ -720,6 +651,7 @@ 2DC5622224EC63430031F69B /* PurchasesCoreSwiftTests */ = { isa = PBXGroup; children = ( + 37E35BCB85973ABD4CEC5904 /* Identity */, F5BE444626985E6E00254A30 /* Attribution */, 37E35AE0CDC4C2AA8260FB58 /* Caching */, 35F82BBB26A9BFA60051DF03 /* FoundationExtensions */, @@ -813,19 +745,41 @@ children = ( 37E35C1554F296F7F1317747 /* MockAppleReceiptBuilder.swift */, 37E351EB3689AF304E5B1031 /* MockASN1ContainerBuilder.swift */, + 351B515F26D44BB600BD2BD7 /* MockAttributionDataMigrator.swift */, + 351B515926D44B6200BD2BD7 /* MockAttributionFetcher.swift */, + 351B514426D449E600BD2BD7 /* MockAttributionTypeFactory.swift */, + 351B514026D4498F00BD2BD7 /* MockBackend.swift */, + 2D1C3F3826B9D8B800112626 /* MockBundle.swift */, + 351B513C26D4491E00BD2BD7 /* MockDeviceCache.swift */, 35D83311262FBD4200E60AC5 /* MockETagManager.swift */, + 351B514C26D44A8600BD2BD7 /* MockHTTPClient.swift */, + 351B513E26D4496000BD2BD7 /* MockIdentityManager.swift */, 37E355744D64075AA91342DE /* MockInAppPurchaseBuilder.swift */, + 351B515B26D44B7900BD2BD7 /* MockIntroEligibilityCalculator.swift */, + 351B515526D44B2300BD2BD7 /* MockNotificationCenter.swift */, + 351B515726D44B3E00BD2BD7 /* MockOfferingsFactory.swift */, + F575858E26C0893600C12B97 /* MockOfferingsManager.swift */, + 351B514A26D44A4A00BD2BD7 /* MockOperationDispatcher.swift */, 37E35C9439E087F63ECC4F59 /* MockProductsManager.swift */, 37E35B08709090FBBFB16EBD /* MockProductsRequest.swift */, 37E35F783903362B65FB7AF3 /* MockProductsRequestFactory.swift */, + 351B514826D44A2F00BD2BD7 /* MockPurchaserInfoManager.swift */, + 351B515D26D44B9900BD2BD7 /* MockPurchasesDelegate.swift */, + 351B515126D44AF000BD2BD7 /* MockReceiptFetcher.swift */, 37E354B13440508B46C9A530 /* MockReceiptParser.swift */, 2DDF41E724F6F61B005BC22D /* MockSKDiscount.swift */, 2DDF41E524F6F5DC005BC22D /* MockSKProduct.swift */, + 351B515326D44B0A00BD2BD7 /* MockStoreKitWrapper.swift */, + 351B514226D449C100BD2BD7 /* MockSubscriberAttributesManager.swift */, + 351B514626D44A0D00BD2BD7 /* MockSystemInfo.swift */, + F591492726B9956C00D32E58 /* MockTransaction.swift */, 37E357D16038F07915D7825D /* MockUserDefaults.swift */, 2DDF41E924F6F844005BC22D /* SKProductSubscriptionDurationExtensions.swift */, - F591492726B9956C00D32E58 /* MockTransaction.swift */, - F575858E26C0893600C12B97 /* MockOfferingsManager.swift */, - 2D1C3F3826B9D8B800112626 /* MockBundle.swift */, + 351B516F26D44E8D00BD2BD7 /* MockDateProvider.swift */, + 351B517126D44EF300BD2BD7 /* MockInMemoryCachedOfferings.swift */, + 351B517326D44F4B00BD2BD7 /* MockPaymentDiscount.swift */, + 351B517526D44F7200BD2BD7 /* MockProductDiscount.swift */, + 351B517926D44FF000BD2BD7 /* MockRequestFetcher.swift */, ); path = Mocks; sourceTree = ""; @@ -861,15 +815,6 @@ path = "Preview Content"; sourceTree = ""; }; - 350FBDD61F7DF1640065833D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 350FBDDC1F7EA3570065833D /* Nimble.framework */, - 350FBDD71F7DF17F0065833D /* OHHTTPStubs.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 350FBDE61F7EEEDF0065833D /* Public */ = { isa = PBXGroup; children = ( @@ -886,7 +831,6 @@ 2D4C18A824F47E4400F268CD /* Purchases.swift */, 2DEC0CFB24A2A1B100B0E5BB /* Package.swift */, 35262A001F7C4B9100C04F2C /* Purchases */, - 35262A1F1F7D77E600C04F2C /* PurchasesTests */, 2DC5621724EC63420031F69B /* PurchasesCoreSwift */, 2DC5622224EC63430031F69B /* PurchasesCoreSwiftTests */, 2DE20B6D264087FB004C597D /* StoreKitTests */, @@ -900,7 +844,6 @@ isa = PBXGroup; children = ( 352629FE1F7C4B9100C04F2C /* Purchases.framework */, - 35262A1E1F7D77E600C04F2C /* PurchasesTests.xctest */, 2DC5621624EC63420031F69B /* PurchasesCoreSwift.framework */, 2DC5621E24EC63430031F69B /* PurchasesCoreSwiftTests.xctest */, 2DE20B6C264087FB004C597D /* StoreKitTests.xctest */, @@ -919,27 +862,10 @@ path = Purchases; sourceTree = ""; }; - 35262A1F1F7D77E600C04F2C /* PurchasesTests */ = { - isa = PBXGroup; - children = ( - 2D0B12ED26BC850100C26EAD /* Attribution */, - B33C43F026729848006B8C8C /* TestHelpers */, - 35262A291F7D783F00C04F2C /* PurchasesTests-Bridging-Header.h */, - 35262A221F7D77E600C04F2C /* Info.plist */, - 350FBDD61F7DF1640065833D /* Frameworks */, - 37E35081077192045E3A8080 /* Mocks */, - 37E35E77A60AC8D3F0E1A23D /* SubscriberAttributes */, - 37E35555C264F76E6CFFC2C8 /* Purchasing */, - 37E35F2DF6910CF4AF147DEB /* Networking */, - 37E35FF455726D96C243B1B7 /* Misc */, - 37E35BCB85973ABD4CEC5904 /* Identity */, - ); - path = PurchasesTests; - sourceTree = ""; - }; 35272E1A26D0023400F22C3B /* Misc */ = { isa = PBXGroup; children = ( + 37E35B9AC7A350CA2437049D /* ISOPeriodFormatterTests.swift */, 37E35EEE7783629CDE41B70C /* SystemInfoTests.swift */, ); path = Misc; @@ -986,6 +912,9 @@ 354235D624C11160008C84EE /* Purchasing */ = { isa = PBXGroup; children = ( + 37E35DE5707E845DA3FF51BC /* PurchasesTests.swift */, + F575859126C08E3F00C12B97 /* OfferingsManagerTests.swift */, + F5BE4244269676E200254A30 /* StoreKitRequestFetcherTests.swift */, 37E3582920E16E065502E5FC /* EntitlementInfosTests.swift */, 2DD02D5624AD0B0500419CD9 /* RCIntroEligibilityTests.swift */, 37E357C2D977BBB081216B5F /* OfferingsTests.swift */, @@ -1030,6 +959,7 @@ 35D832FE262FAD6900E60AC5 /* Networking */ = { isa = PBXGroup; children = ( + 37E358BF58C99AC39073B96C /* BackendTests.swift */, 37E353CBE9CF2572A72A347F /* HTTPClientTests.swift */, 35D832FF262FAD8000E60AC5 /* ETagManagerTests.swift */, ); @@ -1048,53 +978,6 @@ path = FoundationExtensions; sourceTree = ""; }; - 37E35081077192045E3A8080 /* Mocks */ = { - isa = PBXGroup; - children = ( - 35D5DE04268FABFD002B2DBA /* MockAttributionDataMigrator.swift */, - 37E351CD1EE6B897F434EA40 /* MockAttributionFetcher.swift */, - 37E35DA3E083FE37DAF15954 /* MockAttributionTypeFactory.swift */, - 37E35645928A0009F4C105A7 /* MockBackend.swift */, - 37E3578BD602C7B8E2274279 /* MockDateProvider.swift */, - 37E354BEB8FDE39CAB7C4D69 /* MockDeviceCache.swift */, - 35D83316262FC21400E60AC5 /* MockETagManager.swift */, - 37E35292137BBF2810CE4F4B /* MockHTTPClient.swift */, - 37E3571B552018D47A6ED7C6 /* MockIdentityManager.swift */, - 37E35C5A65AAF701DED59800 /* MockInMemoryCachedOfferings.swift */, - 2DA0068E24E2E515002C59D3 /* MockIntroEligibilityCalculator.swift */, - 37E35A0D4A561C51185F82EB /* MockNotificationCenter.swift */, - 37E3555B4BE0A4F7222E7B00 /* MockOfferingsFactory.swift */, - 37E35659EB530A5109AFAB50 /* MockOperationDispatcher.swift */, - 2D390254259CF46000DB19C0 /* MockPaymentDiscount.swift */, - 37E3572040A16F10B957563A /* MockProductDiscount.swift */, - 2D4D6AF224F7172900B656BE /* MockProductsRequest.swift */, - 37E35EBCDDD1A08F8105C46C /* MockPurchaserInfoManager.swift */, - 37E35838A7FD36982EE14100 /* MockPurchasesDelegate.swift */, - 37E352B11676F7DC51559E84 /* MockReceiptFetcher.swift */, - 37E3558F697A939D2BBD7FEC /* MockReceiptParser.swift */, - 37E35609E46E869675A466C1 /* MockRequestFetcher.swift */, - 37E35EABF6D7AFE367718784 /* MockSKDiscount.swift */, - 37E357FBA3184BDE6E95DED4 /* MockSKProduct.swift */, - 37E351AC0FF9607719F7A29A /* MockStoreKitWrapper.swift */, - 37E351D48260D9DC8B1EE360 /* MockSubscriberAttributesManager.swift */, - 2DD7BA4C24C63A830066B4C2 /* MockSystemInfo.swift */, - 37E3550C031F1FD95B366998 /* MockTransaction.swift */, - 35D8331B262FC23100E60AC5 /* MockUserDefaults.swift */, - 2DEB976A247DB85400A92099 /* SKProductSubscriptionDurationExtensions.swift */, - ); - path = Mocks; - sourceTree = ""; - }; - 37E35555C264F76E6CFFC2C8 /* Purchasing */ = { - isa = PBXGroup; - children = ( - F5BE4244269676E200254A30 /* StoreKitRequestFetcherTests.swift */, - 37E35DE5707E845DA3FF51BC /* PurchasesTests.swift */, - F575859126C08E3F00C12B97 /* OfferingsManagerTests.swift */, - ); - path = Purchasing; - sourceTree = ""; - }; 37E35556F2D7B8B28B169C77 /* DataConverters */ = { isa = PBXGroup; children = ( @@ -1120,6 +1003,10 @@ children = ( 37E35C4A4B241A545D1D06BD /* ASN1ObjectIdentifierEncoder.swift */, 37E35092F0E41512E0D610BA /* ContainerFactory.swift */, + 351B516326D44C1F00BD2BD7 /* ObjCThrowExceptionMatcher.swift */, + 351B516826D44C4F00BD2BD7 /* RCObjC.h */, + 351B516626D44C3700BD2BD7 /* RCObjC.m */, + 351B516526D44C3600BD2BD7 /* PurchasesCoreSwiftTests-Bridging-Header.h */, ); path = TestHelpers; sourceTree = ""; @@ -1139,25 +1026,8 @@ 37E35294EBC1E5A879C95540 /* IdentityManagerTests.swift */, 37E35E992F1916C7F3911E7B /* PurchaserInfoManagerTests.swift */, ); - path = Identity; - sourceTree = ""; - }; - 37E35E77A60AC8D3F0E1A23D /* SubscriberAttributes */ = { - isa = PBXGroup; - children = ( - 37E357F69438004E1F443C03 /* BackendSubscriberAttributesTests.swift */, - 37E3567E972B9B04FE079ABA /* SubscriberAttributesManagerTests.swift */, - 37E3508E52201122137D4B4A /* PurchasesSubscriberAttributesTests.swift */, - ); - path = SubscriberAttributes; - sourceTree = ""; - }; - 37E35F2DF6910CF4AF147DEB /* Networking */ = { - isa = PBXGroup; - children = ( - 37E358BF58C99AC39073B96C /* BackendTests.swift */, - ); - path = Networking; + name = Identity; + path = ../PurchasesTests/Identity; sourceTree = ""; }; 37E35FCF87558ACB498521F1 /* BasicTypes */ = { @@ -1171,27 +1041,12 @@ path = BasicTypes; sourceTree = ""; }; - 37E35FF455726D96C243B1B7 /* Misc */ = { - isa = PBXGroup; - children = ( - 37E35B9AC7A350CA2437049D /* ISOPeriodFormatterTests.swift */, - ); - path = Misc; - sourceTree = ""; - }; - B33C43F026729848006B8C8C /* TestHelpers */ = { - isa = PBXGroup; - children = ( - B33C43EB2672953D006B8C8C /* RCObjC.h */, - B33C43EC2672953D006B8C8C /* RCObjC.m */, - B33C43F12672986D006B8C8C /* ObjCThrowExceptionMatcher.swift */, - ); - path = TestHelpers; - sourceTree = ""; - }; B36824BB268FBB9B00957E4C /* SubscriberAttributes */ = { isa = PBXGroup; children = ( + 37E357F69438004E1F443C03 /* BackendSubscriberAttributesTests.swift */, + 37E3567E972B9B04FE079ABA /* SubscriberAttributesManagerTests.swift */, + 37E3508E52201122137D4B4A /* PurchasesSubscriberAttributesTests.swift */, 37E35C4A795A0F056381A1B3 /* DeviceCacheSubscriberAttributesTests.swift */, 35F82BB126A98EC50051DF03 /* AttributionDataMigratorTests.swift */, 2D8DB34A24072AAE00BE3D31 /* SubscriberAttributeTests.swift */, @@ -1313,6 +1168,7 @@ F5BE444626985E6E00254A30 /* Attribution */ = { isa = PBXGroup; children = ( + 37E354FE32DD3EA3FF3ECD0A /* AttributionPosterTests.swift */, 37E350420D54B99BB39448E0 /* AttributionTypeFactoryTests.swift */, ); path = Attribution; @@ -1341,7 +1197,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2D22679125F2D9AD00E6950C /* PurchasesTests-Bridging-Header.h in Headers */, 35262A0F1F7C4B9100C04F2C /* Purchases.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1449,30 +1304,6 @@ productReference = 352629FE1F7C4B9100C04F2C /* Purchases.framework */; productType = "com.apple.product-type.framework"; }; - 35262A1D1F7D77E600C04F2C /* PurchasesTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 35262A261F7D77E600C04F2C /* Build configuration list for PBXNativeTarget "PurchasesTests" */; - buildPhases = ( - 35262A1A1F7D77E600C04F2C /* Sources */, - 35262A1B1F7D77E600C04F2C /* Frameworks */, - 35262A1C1F7D77E600C04F2C /* Resources */, - 350FBDD91F7DFD900065833D /* Copy Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 35DFC68320B8757C004584CC /* PBXTargetDependency */, - ); - name = PurchasesTests; - packageProductDependencies = ( - B3D5CFBC267282630056FA67 /* Nimble */, - B3D5CFBF267282760056FA67 /* OHHTTPStubsSwift */, - B3D5CFC1267282760056FA67 /* OHHTTPStubs */, - ); - productName = PurchasesTests; - productReference = 35262A1E1F7D77E600C04F2C /* PurchasesTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; B387F4722683FDDB0028701F /* APITester */ = { isa = PBXNativeTarget; buildConfigurationList = B387F4772683FDDB0028701F /* Build configuration list for PBXNativeTarget "APITester" */; @@ -1508,6 +1339,7 @@ }; 2DC5621D24EC63430031F69B = { CreatedOnToolsVersion = 12.0; + LastSwiftMigration = 1250; ProvisioningStyle = Automatic; }; 2DE20B6B264087FB004C597D = { @@ -1524,11 +1356,6 @@ LastSwiftMigration = 1200; ProvisioningStyle = Automatic; }; - 35262A1D1F7D77E600C04F2C = { - CreatedOnToolsVersion = 9.0; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; B387F4722683FDDB0028701F = { CreatedOnToolsVersion = 12.5.1; LastSwiftMigration = 1250; @@ -1553,7 +1380,6 @@ projectRoot = ""; targets = ( 352629FD1F7C4B9100C04F2C /* Purchases */, - 35262A1D1F7D77E600C04F2C /* PurchasesTests */, 2DC5621524EC63420031F69B /* PurchasesCoreSwift */, 2DC5621D24EC63430031F69B /* PurchasesCoreSwiftTests */, 2DE20B7E26409EB7004C597D /* StoreKitTestApp */, @@ -1605,13 +1431,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 35262A1C1F7D77E600C04F2C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1758,55 +1577,94 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2D84458926B9CD270033B5A3 /* ReceiptFetcherTests.swift in Sources */, 2DDF41E824F6F61B005BC22D /* MockSKDiscount.swift in Sources */, 35272E2226D0048D00F22C3B /* HTTPClientTests.swift in Sources */, 2DDF41CB24F6F4C3005BC22D /* ASN1ObjectIdentifierBuilderTests.swift in Sources */, B36824BF268FBC8700957E4C /* SubscriberAttributeTests.swift in Sources */, + 351B51BC26D450E800BD2BD7 /* OfferingsTests.swift in Sources */, 2DDF41CF24F6F4C3005BC22D /* ReceiptParsing+TestsWithRealReceipts.swift in Sources */, + 351B514326D449C100BD2BD7 /* MockSubscriberAttributesManager.swift in Sources */, B300E4C026D4371200B22262 /* SKPaymentTransactionExtensionsTests.swift in Sources */, 2DDF41C924F6F4C3005BC22D /* UInt8+ExtensionsTests.swift in Sources */, 2D4D6AF524F717B800B656BE /* ContainerFactory.swift in Sources */, + 351B514726D44A0D00BD2BD7 /* MockSystemInfo.swift in Sources */, + 351B515026D44ACE00BD2BD7 /* BackendSubscriberAttributesTests.swift in Sources */, B300E4C226D439B700B22262 /* IntroEligibilityCalculatorTests.swift in Sources */, 2DDF41CA24F6F4C3005BC22D /* ArraySlice_UInt8+ExtensionsTests.swift in Sources */, 2DDF41E124F6F527005BC22D /* MockReceiptParser.swift in Sources */, + 351B514D26D44A8600BD2BD7 /* MockHTTPClient.swift in Sources */, + 351B516926D44C9500BD2BD7 /* BackendTests.swift in Sources */, 35F82BB226A98EC50051DF03 /* AttributionDataMigratorTests.swift in Sources */, + 351B51BF26D450E800BD2BD7 /* StoreKitRequestFetcherTests.swift in Sources */, 2DDF41E224F6F527005BC22D /* MockProductsRequest.swift in Sources */, + 351B514B26D44A4A00BD2BD7 /* MockOperationDispatcher.swift in Sources */, + 351B514926D44A2F00BD2BD7 /* MockPurchaserInfoManager.swift in Sources */, + 351B517426D44F4B00BD2BD7 /* MockPaymentDiscount.swift in Sources */, + 351B51B926D450E800BD2BD7 /* TransactionsFactoryTests.swift in Sources */, + 351B51BB26D450E800BD2BD7 /* ProductInfoExtractorTests.swift in Sources */, + 351B515426D44B0A00BD2BD7 /* MockStoreKitWrapper.swift in Sources */, 35D83300262FAD8000E60AC5 /* ETagManagerTests.swift in Sources */, - 35272E2026D0042A00F22C3B /* RCIntroEligibilityTests.swift in Sources */, + 351B514126D4498F00BD2BD7 /* MockBackend.swift in Sources */, + 351B513B26D448F400BD2BD7 /* AttributionPosterTests.swift in Sources */, + 351B51B526D450E800BD2BD7 /* ProductsManagerTests.swift in Sources */, 2DDF41CC24F6F4C3005BC22D /* AppleReceiptBuilderTests.swift in Sources */, - B3DF6A46269512690030D57C /* ProductInfoExtensions.swift in Sources */, + 351B51C026D450E800BD2BD7 /* PurchasesTests.swift in Sources */, 2DDF41CD24F6F4C3005BC22D /* ASN1ContainerBuilderTests.swift in Sources */, - B3C1AEFB268FF7210013D50D /* ProductInfoTests.swift in Sources */, - 2DDF41DC24F6F4DB005BC22D /* ProductsManagerTests.swift in Sources */, - B34D2AA4269649EC00D88C3A /* MockProductDiscount.swift in Sources */, + 351B513D26D4491E00BD2BD7 /* MockDeviceCache.swift in Sources */, + 351B515C26D44B7900BD2BD7 /* MockIntroEligibilityCalculator.swift in Sources */, 35D83312262FBD4200E60AC5 /* MockETagManager.swift in Sources */, + 351B51C326D450F200BD2BD7 /* InMemoryCachedObjectTests.swift in Sources */, + 351B517226D44EF300BD2BD7 /* MockInMemoryCachedOfferings.swift in Sources */, + 351B51A426D450BC00BD2BD7 /* NSError+RCExtensionsTests.swift in Sources */, + 351B51B826D450E800BD2BD7 /* StoreKitWrapperTests.swift in Sources */, 2DDF41E624F6F5DC005BC22D /* MockSKProduct.swift in Sources */, + 351B51BA26D450E800BD2BD7 /* ProductInfoExtensions.swift in Sources */, F591492826B9956C00D32E58 /* MockTransaction.swift in Sources */, + 351B517626D44F7200BD2BD7 /* MockProductDiscount.swift in Sources */, + 351B516A26D44CB300BD2BD7 /* ISOPeriodFormatterTests.swift in Sources */, 2DDF41DE24F6F527005BC22D /* MockAppleReceiptBuilder.swift in Sources */, 2DDF41E324F6F527005BC22D /* MockASN1ContainerBuilder.swift in Sources */, + 351B516726D44C3700BD2BD7 /* RCObjC.m in Sources */, 2DDF41DA24F6F4DB005BC22D /* ReceiptParserTests.swift in Sources */, - 35272E2126D0042A00F22C3B /* EntitlementInfosTests.swift in Sources */, + 351B519F26D4508A00BD2BD7 /* DeviceCacheTests.swift in Sources */, + 351B51B626D450E800BD2BD7 /* ReceiptFetcherTests.swift in Sources */, + 351B51A726D450D400BD2BD7 /* SystemInfoTests.swift in Sources */, + 351B515626D44B2300BD2BD7 /* MockNotificationCenter.swift in Sources */, + 351B516426D44C1F00BD2BD7 /* ObjCThrowExceptionMatcher.swift in Sources */, + 351B515226D44AF000BD2BD7 /* MockReceiptFetcher.swift in Sources */, + 351B51C226D450E800BD2BD7 /* ProductInfoTests.swift in Sources */, + 351B51BE26D450E800BD2BD7 /* PurchaserInfoTests.swift in Sources */, 35272E1B26D0029300F22C3B /* DeviceCacheSubscriberAttributesTests.swift in Sources */, - F5BE424326966B0000254A30 /* ProductInfoExtractorTests.swift in Sources */, + 351B516126D44BEB00BD2BD7 /* IdentityManagerTests.swift in Sources */, + 351B51C126D450E800BD2BD7 /* OfferingsManagerTests.swift in Sources */, 35D8330A262FBA9A00E60AC5 /* MockUserDefaults.swift in Sources */, 2DDF41DF24F6F527005BC22D /* MockProductsManager.swift in Sources */, - 2D991ACC268BBCD600085481 /* MockRequestFetcher.swift in Sources */, - 2DC5623724EC68090031F69B /* TransactionsFactoryTests.swift in Sources */, + 351B514F26D44ACE00BD2BD7 /* PurchasesSubscriberAttributesTests.swift in Sources */, + 351B516226D44BEE00BD2BD7 /* PurchaserInfoManagerTests.swift in Sources */, + 351B51A326D450BC00BD2BD7 /* DictionaryExtensionsTests.swift in Sources */, + 351B515826D44B3E00BD2BD7 /* MockOfferingsFactory.swift in Sources */, + 351B51A526D450BC00BD2BD7 /* NSDate+RCExtensionsTests.swift in Sources */, 2D4D6AF424F717B800B656BE /* ASN1ObjectIdentifierEncoder.swift in Sources */, F5BE444726985E7B00254A30 /* AttributionTypeFactoryTests.swift in Sources */, 2DDF41EA24F6F844005BC22D /* SKProductSubscriptionDurationExtensions.swift in Sources */, - B36824C1268FBCE000957E4C /* MockDateProvider.swift in Sources */, + 351B517A26D44FF000BD2BD7 /* MockRequestFetcher.swift in Sources */, + 351B514E26D44ACE00BD2BD7 /* SubscriberAttributesManagerTests.swift in Sources */, 2DDF41CE24F6F4C3005BC22D /* InAppPurchaseBuilderTests.swift in Sources */, B300E4BF26D436F900B22262 /* LogIntent.swift in Sources */, + 351B513F26D4496000BD2BD7 /* MockIdentityManager.swift in Sources */, B319514926C19856002CA9AC /* NSData+RCExtensionsTests.swift in Sources */, + 351B517026D44E8D00BD2BD7 /* MockDateProvider.swift in Sources */, 2D1C3F3926B9D8B800112626 /* MockBundle.swift in Sources */, + 351B515E26D44B9900BD2BD7 /* MockPurchasesDelegate.swift in Sources */, + 351B515A26D44B6200BD2BD7 /* MockAttributionFetcher.swift in Sources */, 2DDF41E424F6F527005BC22D /* MockProductsRequestFactory.swift in Sources */, - 35272E1F26D003F500F22C3B /* OfferingsTests.swift in Sources */, + 351B51BD26D450E800BD2BD7 /* EntitlementInfosTests.swift in Sources */, + 351B514526D449E600BD2BD7 /* MockAttributionTypeFactory.swift in Sources */, F575858F26C0893600C12B97 /* MockOfferingsManager.swift in Sources */, + 351B516026D44BB600BD2BD7 /* MockAttributionDataMigrator.swift in Sources */, 2DDF41E024F6F527005BC22D /* MockInAppPurchaseBuilder.swift in Sources */, 37E352973B0901E3CAA717E1 /* DateFormatter+ExtensionsTests.swift in Sources */, - 35272E1E26D003CB00F22C3B /* PurchaserInfoTests.swift in Sources */, + 351B51B726D450E800BD2BD7 /* RCIntroEligibilityTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1836,66 +1694,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 35262A1A1F7D77E600C04F2C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2DEB976B247DB85400A92099 /* SKProductSubscriptionDurationExtensions.swift in Sources */, - 37E354BE25CE61E55E4FD89C /* MockDeviceCache.swift in Sources */, - 37E351AB03EE37534CA10B59 /* MockInMemoryCachedOfferings.swift in Sources */, - 37E351E3AC0B5F67305B4CB6 /* DeviceCacheTests.swift in Sources */, - 35D5DE05268FABFD002B2DBA /* MockAttributionDataMigrator.swift in Sources */, - 37E35AF213F2F79CB067FDC2 /* InMemoryCachedObjectTests.swift in Sources */, - 37E353851D42047D5B0A57D0 /* MockDateProvider.swift in Sources */, - B33C43F22672986D006B8C8C /* ObjCThrowExceptionMatcher.swift in Sources */, - 37E354C46A8A3C2DC861C224 /* MockHTTPClient.swift in Sources */, - 37E351A24D613F0DFE6AF05F /* MockBackend.swift in Sources */, - 2D4D6AF124F6FEE000B656BE /* MockIntroEligibilityCalculator.swift in Sources */, - 37E3524628A1D7568679FEE2 /* SubscriberAttributesManagerTests.swift in Sources */, - 37E352897F7CB3A122F9739F /* PurchasesSubscriberAttributesTests.swift in Sources */, - 35D8331C262FC23100E60AC5 /* MockUserDefaults.swift in Sources */, - 37E35DD380900220C34BB222 /* MockTransaction.swift in Sources */, - 37E3554836D4DA9336B9FA70 /* MockProductDiscount.swift in Sources */, - 37E35398FCB4931573C56CAF /* MockReceiptFetcher.swift in Sources */, - 37E35AD0B0D9EF0CDA29DAC2 /* MockStoreKitWrapper.swift in Sources */, - 37E35EBDFC5CD3068E1792A3 /* MockNotificationCenter.swift in Sources */, - 35D83317262FC21400E60AC5 /* MockETagManager.swift in Sources */, - 2D8E9D482523747D00AFEE11 /* DictionaryExtensionsTests.swift in Sources */, - 37E354E0A9A371481540B2B0 /* MockAttributionFetcher.swift in Sources */, - F575859226C08E3F00C12B97 /* OfferingsManagerTests.swift in Sources */, - 2D390255259CF46000DB19C0 /* MockPaymentDiscount.swift in Sources */, - 37E35EDC57C486AC2D66B4B8 /* MockOfferingsFactory.swift in Sources */, - 2DD7BA4D24C63A830066B4C2 /* MockSystemInfo.swift in Sources */, - 37E35EB7B35C86140B96C58B /* MockIdentityManager.swift in Sources */, - 37E357E33F0E20D92EE6372E /* MockSKProduct.swift in Sources */, - 2D3E29CE25E8009000456FA8 /* MockAttributionTypeFactory.swift in Sources */, - 37E3524CB70618E6C5F3DB49 /* MockPurchasesDelegate.swift in Sources */, - 37E35B1F34D1624509012749 /* MockSubscriberAttributesManager.swift in Sources */, - B36824C3268FBE1500957E4C /* BackendSubscriberAttributesTests.swift in Sources */, - F5BE4245269676E200254A30 /* StoreKitRequestFetcherTests.swift in Sources */, - F575859026C0893E00C12B97 /* MockOfferingsManager.swift in Sources */, - 2D991ACD268BBE8600085481 /* MockRequestFetcher.swift in Sources */, - 2D80736A268A691A0072284E /* MockProductsManager.swift in Sources */, - 37E35F549AEB655AB6DA83B3 /* MockSKDiscount.swift in Sources */, - 2D4D6AF324F7172900B656BE /* MockProductsRequest.swift in Sources */, - 37E3555F3FB596CAB8F46868 /* BackendTests.swift in Sources */, - 37E356538C6A9A05887CAE12 /* NSError+RCExtensionsTests.swift in Sources */, - 37E359E815ECBE0B9074FA19 /* NSDate+RCExtensionsTests.swift in Sources */, - B33C43EF267295E2006B8C8C /* RCObjC.m in Sources */, - 37E3595F797614307CBA329A /* StoreKitWrapperTests.swift in Sources */, - 2DDA3E4824DB101C00EDFE5B /* MockOperationDispatcher.swift in Sources */, - 37E35A37D97E9E2B0CA09300 /* ISOPeriodFormatterTests.swift in Sources */, - B3DF6A472695145E0030D57C /* ProductInfoExtensions.swift in Sources */, - 37E3599326581376E0142EEC /* SystemInfoTests.swift in Sources */, - 37E35F67255A87BD86B39D43 /* MockReceiptParser.swift in Sources */, - B3DF6A452694DCBA0030D57C /* PurchasesTests.swift in Sources */, - 37E359F038FEA41F207662A5 /* MockPurchaserInfoManager.swift in Sources */, - 37E35FF7952D59C0AE3879D3 /* IdentityManagerTests.swift in Sources */, - 37E35D6F8CF6DFB88F0A2F61 /* PurchaserInfoManagerTests.swift in Sources */, - 2DCCC68D26BB38E500E61E6D /* AttributionPosterTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B387F46F2683FDDB0028701F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1933,11 +1731,6 @@ target = 2DE20B7E26409EB7004C597D /* StoreKitTestApp */; targetProxy = 2DE20B8E26409EC0004C597D /* PBXContainerItemProxy */; }; - 35DFC68320B8757C004584CC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 352629FD1F7C4B9100C04F2C /* Purchases */; - targetProxy = 35DFC68220B8757C004584CC /* PBXContainerItemProxy */; - }; B387F48826840B7F0028701F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 352629FD1F7C4B9100C04F2C /* Purchases */; @@ -2028,6 +1821,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; + CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CODE_SIGN_STYLE = Automatic; @@ -2047,6 +1841,7 @@ SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvsimulator appletvos"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OBJC_BRIDGING_HEADER = "PurchasesCoreSwiftTests/TestHelpers/PurchasesCoreSwiftTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3,6"; @@ -2059,6 +1854,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; + CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CODE_SIGN_STYLE = Automatic; @@ -2076,6 +1872,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvsimulator appletvos"; + SWIFT_OBJC_BRIDGING_HEADER = "PurchasesCoreSwiftTests/TestHelpers/PurchasesCoreSwiftTests-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3,6"; TVOS_DEPLOYMENT_TARGET = 9.0; @@ -2373,66 +2170,6 @@ }; name = Release; }; - 35262A271F7D77E600C04F2C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 8SXR2327BM; - INFOPLIST_FILE = PurchasesTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = com.purchases.PurchasesTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvsimulator appletvos"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OBJC_BRIDGING_HEADER = "PurchasesTests/PurchasesTests-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_PRECOMPILE_BRIDGING_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3,6"; - TVOS_DEPLOYMENT_TARGET = 9.0; - WATCHOS_DEPLOYMENT_TARGET = 6.2; - }; - name = Debug; - }; - 35262A281F7D77E600C04F2C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 8SXR2327BM; - INFOPLIST_FILE = PurchasesTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = com.purchases.PurchasesTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx appletvsimulator appletvos"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OBJC_BRIDGING_HEADER = "PurchasesTests/PurchasesTests-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_PRECOMPILE_BRIDGING_HEADER = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,3,6"; - TVOS_DEPLOYMENT_TARGET = 9.0; - WATCHOS_DEPLOYMENT_TARGET = 6.2; - }; - name = Release; - }; B387F4782683FDDB0028701F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2538,15 +2275,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 35262A261F7D77E600C04F2C /* Build configuration list for PBXNativeTarget "PurchasesTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 35262A271F7D77E600C04F2C /* Debug */, - 35262A281F7D77E600C04F2C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; B387F4772683FDDB0028701F /* Build configuration list for PBXNativeTarget "APITester" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2578,21 +2306,6 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - B3D5CFBC267282630056FA67 /* Nimble */ = { - isa = XCSwiftPackageProductDependency; - package = B3D5CFBB267282630056FA67 /* XCRemoteSwiftPackageReference "Nimble" */; - productName = Nimble; - }; - B3D5CFBF267282760056FA67 /* OHHTTPStubsSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B3D5CFBE267282760056FA67 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */; - productName = OHHTTPStubsSwift; - }; - B3D5CFC1267282760056FA67 /* OHHTTPStubs */ = { - isa = XCSwiftPackageProductDependency; - package = B3D5CFBE267282760056FA67 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */; - productName = OHHTTPStubs; - }; B3D5CFC32672827D0056FA67 /* Nimble */ = { isa = XCSwiftPackageProductDependency; package = B3D5CFBB267282630056FA67 /* XCRemoteSwiftPackageReference "Nimble" */; diff --git a/Purchases.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme b/Purchases.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme index c278ee15af..c12e9bbd16 100644 --- a/Purchases.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme +++ b/Purchases.xcodeproj/xcshareddata/xcschemes/Unit Tests.xcscheme @@ -14,9 +14,9 @@ buildForAnalyzing = "YES"> @@ -28,17 +28,6 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "NO"> - - - - @@ -76,9 +65,9 @@ diff --git a/PurchasesCoreSwift/FoundationExtensions/Error+Extensions.swift b/PurchasesCoreSwift/FoundationExtensions/Error+Extensions.swift index d660fccccf..db1f19dc44 100644 --- a/PurchasesCoreSwift/FoundationExtensions/Error+Extensions.swift +++ b/PurchasesCoreSwift/FoundationExtensions/Error+Extensions.swift @@ -13,7 +13,7 @@ import Foundation -@objc public extension NSError { +extension NSError { var rc_successfullySynced: Bool { if code == ErrorCode.networkError.rawValue { diff --git a/PurchasesTests/Attribution/AttributionPosterTests.swift b/PurchasesCoreSwiftTests/Attribution/AttributionPosterTests.swift similarity index 99% rename from PurchasesTests/Attribution/AttributionPosterTests.swift rename to PurchasesCoreSwiftTests/Attribution/AttributionPosterTests.swift index 4792b9ae29..a77fce4110 100644 --- a/PurchasesTests/Attribution/AttributionPosterTests.swift +++ b/PurchasesCoreSwiftTests/Attribution/AttributionPosterTests.swift @@ -16,7 +16,7 @@ import Foundation import XCTest import Nimble -import Purchases + @testable import PurchasesCoreSwift class AttributionPosterTests: XCTestCase { diff --git a/PurchasesCoreSwiftTests/FoundationExtensions/NSDate+RCExtensionsTests.swift b/PurchasesCoreSwiftTests/FoundationExtensions/NSDate+RCExtensionsTests.swift index 97c11ab239..1644fcf327 100644 --- a/PurchasesCoreSwiftTests/FoundationExtensions/NSDate+RCExtensionsTests.swift +++ b/PurchasesCoreSwiftTests/FoundationExtensions/NSDate+RCExtensionsTests.swift @@ -6,7 +6,6 @@ import Nimble import XCTest -import Purchases @testable import PurchasesCoreSwift class NSDateExtensionsTests: XCTestCase { diff --git a/PurchasesCoreSwiftTests/FoundationExtensions/NSError+RCExtensionsTests.swift b/PurchasesCoreSwiftTests/FoundationExtensions/NSError+RCExtensionsTests.swift index 713c749f2e..5a997f19e4 100644 --- a/PurchasesCoreSwiftTests/FoundationExtensions/NSError+RCExtensionsTests.swift +++ b/PurchasesCoreSwiftTests/FoundationExtensions/NSError+RCExtensionsTests.swift @@ -6,7 +6,6 @@ import XCTest import Nimble -import Purchases @testable import PurchasesCoreSwift class NSErrorRCExtensionsTests: XCTestCase { diff --git a/PurchasesTests/Misc/ISOPeriodFormatterTests.swift b/PurchasesCoreSwiftTests/Misc/ISOPeriodFormatterTests.swift similarity index 100% rename from PurchasesTests/Misc/ISOPeriodFormatterTests.swift rename to PurchasesCoreSwiftTests/Misc/ISOPeriodFormatterTests.swift diff --git a/PurchasesTests/Mocks/MockAttributionDataMigrator.swift b/PurchasesCoreSwiftTests/Mocks/MockAttributionDataMigrator.swift similarity index 100% rename from PurchasesTests/Mocks/MockAttributionDataMigrator.swift rename to PurchasesCoreSwiftTests/Mocks/MockAttributionDataMigrator.swift diff --git a/PurchasesTests/Mocks/MockAttributionFetcher.swift b/PurchasesCoreSwiftTests/Mocks/MockAttributionFetcher.swift similarity index 99% rename from PurchasesTests/Mocks/MockAttributionFetcher.swift rename to PurchasesCoreSwiftTests/Mocks/MockAttributionFetcher.swift index b7021403f8..308bf138f3 100644 --- a/PurchasesTests/Mocks/MockAttributionFetcher.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockAttributionFetcher.swift @@ -6,7 +6,7 @@ @testable import PurchasesCoreSwift class MockAttributionFetcher: AttributionFetcher { - + override var identifierForAdvertisers: String? { return "rc_idfa" } diff --git a/PurchasesTests/Mocks/MockAttributionTypeFactory.swift b/PurchasesCoreSwiftTests/Mocks/MockAttributionTypeFactory.swift similarity index 99% rename from PurchasesTests/Mocks/MockAttributionTypeFactory.swift rename to PurchasesCoreSwiftTests/Mocks/MockAttributionTypeFactory.swift index 1fa4208cb9..5b9c2e1ee3 100644 --- a/PurchasesTests/Mocks/MockAttributionTypeFactory.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockAttributionTypeFactory.swift @@ -37,7 +37,7 @@ class MockAdClientProxy: AdClientProxy { @available(iOS 14, macOS 11, tvOS 14, *) class MockTrackingManagerProxy: TrackingManagerProxy { - + static var mockAuthorizationStatus: ATTrackingManager.AuthorizationStatus = .authorized override func trackingAuthorizationStatus() -> Int { diff --git a/PurchasesTests/Mocks/MockBackend.swift b/PurchasesCoreSwiftTests/Mocks/MockBackend.swift similarity index 99% rename from PurchasesTests/Mocks/MockBackend.swift rename to PurchasesCoreSwiftTests/Mocks/MockBackend.swift index 6de9a1db24..7a922bbddf 100644 --- a/PurchasesTests/Mocks/MockBackend.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockBackend.swift @@ -112,7 +112,7 @@ class MockBackend: Backend { invokedGetOfferingsForAppUserIDCount += 1 invokedGetOfferingsForAppUserIDParameters = (appUserID, completion) invokedGetOfferingsForAppUserIDParametersList.append((appUserID, completion)) - + completion(stubbedGetOfferingsCompletionResult?.data, stubbedGetOfferingsCompletionResult?.error) } diff --git a/PurchasesTests/Mocks/MockDateProvider.swift b/PurchasesCoreSwiftTests/Mocks/MockDateProvider.swift similarity index 100% rename from PurchasesTests/Mocks/MockDateProvider.swift rename to PurchasesCoreSwiftTests/Mocks/MockDateProvider.swift diff --git a/PurchasesTests/Mocks/MockDeviceCache.swift b/PurchasesCoreSwiftTests/Mocks/MockDeviceCache.swift similarity index 99% rename from PurchasesTests/Mocks/MockDeviceCache.swift rename to PurchasesCoreSwiftTests/Mocks/MockDeviceCache.swift index d218cdf724..f1527ca663 100644 --- a/PurchasesTests/Mocks/MockDeviceCache.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockDeviceCache.swift @@ -3,7 +3,6 @@ // Copyright © 2020 RevenueCat. All rights reserved. // -import Purchases @testable import PurchasesCoreSwift class MockDeviceCache: DeviceCache { diff --git a/PurchasesTests/Mocks/MockHTTPClient.swift b/PurchasesCoreSwiftTests/Mocks/MockHTTPClient.swift similarity index 99% rename from PurchasesTests/Mocks/MockHTTPClient.swift rename to PurchasesCoreSwiftTests/Mocks/MockHTTPClient.swift index b6cd093696..cf891e5b2b 100644 --- a/PurchasesTests/Mocks/MockHTTPClient.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockHTTPClient.swift @@ -1,4 +1,3 @@ -import Purchases @testable import PurchasesCoreSwift class MockHTTPClient: HTTPClient { diff --git a/PurchasesTests/Mocks/MockIdentityManager.swift b/PurchasesCoreSwiftTests/Mocks/MockIdentityManager.swift similarity index 100% rename from PurchasesTests/Mocks/MockIdentityManager.swift rename to PurchasesCoreSwiftTests/Mocks/MockIdentityManager.swift diff --git a/PurchasesTests/Mocks/MockInMemoryCachedOfferings.swift b/PurchasesCoreSwiftTests/Mocks/MockInMemoryCachedOfferings.swift similarity index 100% rename from PurchasesTests/Mocks/MockInMemoryCachedOfferings.swift rename to PurchasesCoreSwiftTests/Mocks/MockInMemoryCachedOfferings.swift diff --git a/PurchasesTests/Mocks/MockIntroEligibilityCalculator.swift b/PurchasesCoreSwiftTests/Mocks/MockIntroEligibilityCalculator.swift similarity index 98% rename from PurchasesTests/Mocks/MockIntroEligibilityCalculator.swift rename to PurchasesCoreSwiftTests/Mocks/MockIntroEligibilityCalculator.swift index 7493b4dccd..e0ac05294d 100644 --- a/PurchasesTests/Mocks/MockIntroEligibilityCalculator.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockIntroEligibilityCalculator.swift @@ -7,7 +7,7 @@ // import Foundation -@testable import Purchases + @testable import PurchasesCoreSwift class MockIntroEligibilityCalculator: PurchasesCoreSwift.IntroEligibilityCalculator { @@ -18,7 +18,7 @@ class MockIntroEligibilityCalculator: PurchasesCoreSwift.IntroEligibilityCalcula var invokedCheckTrialOrIntroductoryPriceEligibilityParametersList = [(receiptData: Data, candidateProductIdentifiers: Set)]() var stubbedCheckTrialOrIntroductoryPriceEligibilityCompletionResult: ([String: NSNumber], Error?)? - + @available(iOS 12.0, macOS 10.14, macCatalyst 13.0, tvOS 12.0, watchOS 6.2, *) override func checkTrialOrIntroductoryPriceEligibility(with receiptData: Data, productIdentifiers candidateProductIdentifiers: Set, diff --git a/PurchasesTests/Mocks/MockNotificationCenter.swift b/PurchasesCoreSwiftTests/Mocks/MockNotificationCenter.swift similarity index 100% rename from PurchasesTests/Mocks/MockNotificationCenter.swift rename to PurchasesCoreSwiftTests/Mocks/MockNotificationCenter.swift diff --git a/PurchasesTests/Mocks/MockOfferingsFactory.swift b/PurchasesCoreSwiftTests/Mocks/MockOfferingsFactory.swift similarity index 99% rename from PurchasesTests/Mocks/MockOfferingsFactory.swift rename to PurchasesCoreSwiftTests/Mocks/MockOfferingsFactory.swift index a451011f5f..01958c63f2 100644 --- a/PurchasesTests/Mocks/MockOfferingsFactory.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockOfferingsFactory.swift @@ -6,10 +6,10 @@ import StoreKit class MockOfferingsFactory: OfferingsFactory { - + var emptyOfferings = false var badOfferings = false - + override func createOfferings(withProducts products: [String: SKProduct], data: [String: Any]) -> Offerings? { if (emptyOfferings) { diff --git a/PurchasesTests/Mocks/MockOperationDispatcher.swift b/PurchasesCoreSwiftTests/Mocks/MockOperationDispatcher.swift similarity index 100% rename from PurchasesTests/Mocks/MockOperationDispatcher.swift rename to PurchasesCoreSwiftTests/Mocks/MockOperationDispatcher.swift diff --git a/PurchasesTests/Mocks/MockPaymentDiscount.swift b/PurchasesCoreSwiftTests/Mocks/MockPaymentDiscount.swift similarity index 100% rename from PurchasesTests/Mocks/MockPaymentDiscount.swift rename to PurchasesCoreSwiftTests/Mocks/MockPaymentDiscount.swift diff --git a/PurchasesTests/Mocks/MockProductDiscount.swift b/PurchasesCoreSwiftTests/Mocks/MockProductDiscount.swift similarity index 100% rename from PurchasesTests/Mocks/MockProductDiscount.swift rename to PurchasesCoreSwiftTests/Mocks/MockProductDiscount.swift diff --git a/PurchasesTests/Mocks/MockPurchaserInfoManager.swift b/PurchasesCoreSwiftTests/Mocks/MockPurchaserInfoManager.swift similarity index 100% rename from PurchasesTests/Mocks/MockPurchaserInfoManager.swift rename to PurchasesCoreSwiftTests/Mocks/MockPurchaserInfoManager.swift diff --git a/PurchasesTests/Mocks/MockPurchasesDelegate.swift b/PurchasesCoreSwiftTests/Mocks/MockPurchasesDelegate.swift similarity index 100% rename from PurchasesTests/Mocks/MockPurchasesDelegate.swift rename to PurchasesCoreSwiftTests/Mocks/MockPurchasesDelegate.swift diff --git a/PurchasesTests/Mocks/MockReceiptFetcher.swift b/PurchasesCoreSwiftTests/Mocks/MockReceiptFetcher.swift similarity index 100% rename from PurchasesTests/Mocks/MockReceiptFetcher.swift rename to PurchasesCoreSwiftTests/Mocks/MockReceiptFetcher.swift diff --git a/PurchasesTests/Mocks/MockRequestFetcher.swift b/PurchasesCoreSwiftTests/Mocks/MockRequestFetcher.swift similarity index 100% rename from PurchasesTests/Mocks/MockRequestFetcher.swift rename to PurchasesCoreSwiftTests/Mocks/MockRequestFetcher.swift diff --git a/PurchasesTests/Mocks/MockStoreKitWrapper.swift b/PurchasesCoreSwiftTests/Mocks/MockStoreKitWrapper.swift similarity index 100% rename from PurchasesTests/Mocks/MockStoreKitWrapper.swift rename to PurchasesCoreSwiftTests/Mocks/MockStoreKitWrapper.swift diff --git a/PurchasesTests/Mocks/MockSubscriberAttributesManager.swift b/PurchasesCoreSwiftTests/Mocks/MockSubscriberAttributesManager.swift similarity index 99% rename from PurchasesTests/Mocks/MockSubscriberAttributesManager.swift rename to PurchasesCoreSwiftTests/Mocks/MockSubscriberAttributesManager.swift index 1eab1266b2..d53e73e676 100644 --- a/PurchasesTests/Mocks/MockSubscriberAttributesManager.swift +++ b/PurchasesCoreSwiftTests/Mocks/MockSubscriberAttributesManager.swift @@ -78,12 +78,12 @@ class MockSubscriberAttributesManager: SubscriberAttributesManager { invokedSetPushTokenStringParameters = (pushToken, appUserID) invokedSetPushTokenStringParametersList.append((pushToken, appUserID)) } - + var invokedSetAdjustID = false var invokedSetAdjustIDCount = 0 var invokedSetAdjustIDParameters: (adjustID: String?, appUserID: String?)? var invokedSetAdjustIDParametersList = [(pushToken: String?, appUserID: String?)]() - + override func setAdjustID(_ adjustID: String?, appUserID: String) { invokedSetAdjustID = true invokedSetAdjustIDCount += 1 @@ -249,12 +249,12 @@ class MockSubscriberAttributesManager: SubscriberAttributesManager { invokedSyncAttributesForAllUsersParameters = (currentAppUserID, ()) invokedSyncAttributesForAllUsersParametersList.append((currentAppUserID, ())) } - + var invokedCollectDeviceIdentifiers = false var invokedCollectDeviceIdentifiersCount = 0 var invokedCollectDeviceIdentifiersParameters: (appUserID: String?, Void)? var invokedCollectDeviceIdentifiersParametersList = [(appUserID: String?, Void)]() - + override func collectDeviceIdentifiers(forAppUserID appUserID: String) { invokedCollectDeviceIdentifiers = true invokedCollectDeviceIdentifiersCount += 1 diff --git a/PurchasesTests/Mocks/MockSystemInfo.swift b/PurchasesCoreSwiftTests/Mocks/MockSystemInfo.swift similarity index 100% rename from PurchasesTests/Mocks/MockSystemInfo.swift rename to PurchasesCoreSwiftTests/Mocks/MockSystemInfo.swift diff --git a/PurchasesTests/Networking/BackendTests.swift b/PurchasesCoreSwiftTests/Networking/BackendTests.swift similarity index 99% rename from PurchasesTests/Networking/BackendTests.swift rename to PurchasesCoreSwiftTests/Networking/BackendTests.swift index fd5215eb13..8b783f8654 100644 --- a/PurchasesTests/Networking/BackendTests.swift +++ b/PurchasesCoreSwiftTests/Networking/BackendTests.swift @@ -10,7 +10,6 @@ import Foundation import XCTest import Nimble -import Purchases @testable import PurchasesCoreSwift class BackendTests: XCTestCase { diff --git a/PurchasesCoreSwiftTests/Networking/HTTPClientTests.swift b/PurchasesCoreSwiftTests/Networking/HTTPClientTests.swift index 9406288e88..d50f5b3aa5 100644 --- a/PurchasesCoreSwiftTests/Networking/HTTPClientTests.swift +++ b/PurchasesCoreSwiftTests/Networking/HTTPClientTests.swift @@ -11,7 +11,6 @@ import OHHTTPStubs import OHHTTPStubsSwift import Nimble -import Purchases @testable import PurchasesCoreSwift class HTTPClientTests: XCTestCase { diff --git a/PurchasesCoreSwiftTests/Purchasing/EntitlementInfosTests.swift b/PurchasesCoreSwiftTests/Purchasing/EntitlementInfosTests.swift index 5000e0668d..baa9496c1b 100644 --- a/PurchasesCoreSwiftTests/Purchasing/EntitlementInfosTests.swift +++ b/PurchasesCoreSwiftTests/Purchasing/EntitlementInfosTests.swift @@ -10,7 +10,6 @@ import Foundation import XCTest import Nimble -import Purchases import PurchasesCoreSwift class EntitlementInfosTests: XCTestCase { diff --git a/PurchasesTests/Purchasing/OfferingsManagerTests.swift b/PurchasesCoreSwiftTests/Purchasing/OfferingsManagerTests.swift similarity index 100% rename from PurchasesTests/Purchasing/OfferingsManagerTests.swift rename to PurchasesCoreSwiftTests/Purchasing/OfferingsManagerTests.swift diff --git a/PurchasesCoreSwiftTests/Purchasing/OfferingsTests.swift b/PurchasesCoreSwiftTests/Purchasing/OfferingsTests.swift index 2ad9185902..d6855087e9 100644 --- a/PurchasesCoreSwiftTests/Purchasing/OfferingsTests.swift +++ b/PurchasesCoreSwiftTests/Purchasing/OfferingsTests.swift @@ -11,7 +11,6 @@ import Nimble import StoreKit import XCTest -import Purchases @testable import PurchasesCoreSwift class OfferingsTests: XCTestCase { diff --git a/PurchasesCoreSwiftTests/Purchasing/PurchaserInfoTests.swift b/PurchasesCoreSwiftTests/Purchasing/PurchaserInfoTests.swift index a8e3babd82..15b57d0710 100644 --- a/PurchasesCoreSwiftTests/Purchasing/PurchaserInfoTests.swift +++ b/PurchasesCoreSwiftTests/Purchasing/PurchaserInfoTests.swift @@ -10,7 +10,6 @@ import Foundation import XCTest import Nimble -import Purchases import PurchasesCoreSwift class EmptyPurchaserInfoTests: XCTestCase { diff --git a/PurchasesTests/Purchasing/PurchasesTests.swift b/PurchasesCoreSwiftTests/Purchasing/PurchasesTests.swift similarity index 100% rename from PurchasesTests/Purchasing/PurchasesTests.swift rename to PurchasesCoreSwiftTests/Purchasing/PurchasesTests.swift diff --git a/PurchasesCoreSwiftTests/Purchasing/RCIntroEligibilityTests.swift b/PurchasesCoreSwiftTests/Purchasing/RCIntroEligibilityTests.swift index 9c17cefc25..b90256e78c 100644 --- a/PurchasesCoreSwiftTests/Purchasing/RCIntroEligibilityTests.swift +++ b/PurchasesCoreSwiftTests/Purchasing/RCIntroEligibilityTests.swift @@ -8,7 +8,7 @@ import XCTest import Nimble -import Purchases + @testable import PurchasesCoreSwift class IntroEligibilityTests: XCTestCase { diff --git a/PurchasesTests/Purchasing/StoreKitRequestFetcherTests.swift b/PurchasesCoreSwiftTests/Purchasing/StoreKitRequestFetcherTests.swift similarity index 100% rename from PurchasesTests/Purchasing/StoreKitRequestFetcherTests.swift rename to PurchasesCoreSwiftTests/Purchasing/StoreKitRequestFetcherTests.swift diff --git a/PurchasesTests/SubscriberAttributes/BackendSubscriberAttributesTests.swift b/PurchasesCoreSwiftTests/SubscriberAttributes/BackendSubscriberAttributesTests.swift similarity index 100% rename from PurchasesTests/SubscriberAttributes/BackendSubscriberAttributesTests.swift rename to PurchasesCoreSwiftTests/SubscriberAttributes/BackendSubscriberAttributesTests.swift diff --git a/PurchasesTests/SubscriberAttributes/PurchasesSubscriberAttributesTests.swift b/PurchasesCoreSwiftTests/SubscriberAttributes/PurchasesSubscriberAttributesTests.swift similarity index 100% rename from PurchasesTests/SubscriberAttributes/PurchasesSubscriberAttributesTests.swift rename to PurchasesCoreSwiftTests/SubscriberAttributes/PurchasesSubscriberAttributesTests.swift diff --git a/PurchasesTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift b/PurchasesCoreSwiftTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift similarity index 99% rename from PurchasesTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift rename to PurchasesCoreSwiftTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift index 578d474e19..5bcf6057b3 100644 --- a/PurchasesTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift +++ b/PurchasesCoreSwiftTests/SubscriberAttributes/SubscriberAttributesManagerTests.swift @@ -13,7 +13,6 @@ import XCTest import Nimble -import Purchases @testable import PurchasesCoreSwift class SubscriberAttributesManagerTests: XCTestCase { diff --git a/PurchasesTests/TestHelpers/ObjCThrowExceptionMatcher.swift b/PurchasesCoreSwiftTests/TestHelpers/ObjCThrowExceptionMatcher.swift similarity index 99% rename from PurchasesTests/TestHelpers/ObjCThrowExceptionMatcher.swift rename to PurchasesCoreSwiftTests/TestHelpers/ObjCThrowExceptionMatcher.swift index 9d1d89d54e..45fc552080 100644 --- a/PurchasesTests/TestHelpers/ObjCThrowExceptionMatcher.swift +++ b/PurchasesCoreSwiftTests/TestHelpers/ObjCThrowExceptionMatcher.swift @@ -17,9 +17,9 @@ import Foundation import Nimble enum ObjCException: String { - + case parameterAssert = "NSInternalInconsistencyException" - + } func expectToThrowException(_ named: ObjCException? = nil, closure: @escaping () -> Void) -> Void { diff --git a/PurchasesTests/PurchasesTests-Bridging-Header.h b/PurchasesCoreSwiftTests/TestHelpers/PurchasesCoreSwiftTests-Bridging-Header.h similarity index 100% rename from PurchasesTests/PurchasesTests-Bridging-Header.h rename to PurchasesCoreSwiftTests/TestHelpers/PurchasesCoreSwiftTests-Bridging-Header.h diff --git a/PurchasesTests/TestHelpers/RCObjC.h b/PurchasesCoreSwiftTests/TestHelpers/RCObjC.h similarity index 100% rename from PurchasesTests/TestHelpers/RCObjC.h rename to PurchasesCoreSwiftTests/TestHelpers/RCObjC.h diff --git a/PurchasesTests/TestHelpers/RCObjC.m b/PurchasesCoreSwiftTests/TestHelpers/RCObjC.m similarity index 100% rename from PurchasesTests/TestHelpers/RCObjC.m rename to PurchasesCoreSwiftTests/TestHelpers/RCObjC.m diff --git a/PurchasesTests/Identity/PurchaserInfoManagerTests.swift b/PurchasesTests/Identity/PurchaserInfoManagerTests.swift index e8bb648545..46a1f75a1a 100644 --- a/PurchasesTests/Identity/PurchaserInfoManagerTests.swift +++ b/PurchasesTests/Identity/PurchaserInfoManagerTests.swift @@ -1,7 +1,6 @@ import XCTest import Nimble -@testable import Purchases @testable import PurchasesCoreSwift class PurchaserInfoManagerTests: XCTestCase { diff --git a/PurchasesTests/Info.plist b/PurchasesTests/Info.plist deleted file mode 100644 index 84dcc1d73a..0000000000 --- a/PurchasesTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Purchases - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 3.13.0 - CFBundleVersion - 1 - - diff --git a/PurchasesTests/Mocks/MockETagManager.swift b/PurchasesTests/Mocks/MockETagManager.swift deleted file mode 100644 index 3edcafd6cc..0000000000 --- a/PurchasesTests/Mocks/MockETagManager.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// MockETagManager.swift -// PurchasesCoreSwiftTests -// -// Created by César de la Vega on 4/20/21. -// Copyright © 2021 Purchases. All rights reserved. -// - -import Foundation - -@testable import PurchasesCoreSwift - -class MockETagManager: ETagManager { - - var invokedETagHeader = false - var invokedETagHeaderCount = 0 - var invokedETagHeaderParameters: (urlRequest: URLRequest, refreshETag: Bool)? - var invokedETagHeaderParametersList = [(urlRequest: URLRequest, refreshETag: Bool)]() - var stubbedETagHeaderResult: [String: String]! = [:] - - override func eTagHeader(for urlRequest: URLRequest, refreshETag: Bool = false) -> [String: String] { - invokedETagHeader = true - invokedETagHeaderCount += 1 - invokedETagHeaderParameters = (urlRequest, refreshETag) - invokedETagHeaderParametersList.append((urlRequest, refreshETag)) - return stubbedETagHeaderResult - } - - var invokedHTTPResultFromCacheOrBackend = false - var invokedHTTPResultFromCacheOrBackendCount = 0 - var invokedHTTPResultFromCacheOrBackendParameters: (response: HTTPURLResponse, responseObject: [String: Any]?, error: Error?, request: URLRequest, retried: Bool)? - var invokedHTTPResultFromCacheOrBackendParametersList = [(response: HTTPURLResponse, responseObject: [String: Any]?, error: Error?, request: URLRequest, retried: Bool)]() - var stubbedHTTPResultFromCacheOrBackendResult: HTTPResponse! - var shouldReturnResultFromBackend = true - - override func httpResultFromCacheOrBackend(with response: HTTPURLResponse, - jsonObject: [String: Any]?, - error: Error?, - request: URLRequest, - retried: Bool) -> HTTPResponse? { - invokedHTTPResultFromCacheOrBackend = true - invokedHTTPResultFromCacheOrBackendCount += 1 - invokedHTTPResultFromCacheOrBackendParameters = (response, jsonObject, error, request, retried) - invokedHTTPResultFromCacheOrBackendParametersList.append((response, jsonObject, error, request, retried)) - if shouldReturnResultFromBackend { - return HTTPResponse(statusCode: response.statusCode, jsonObject: jsonObject) - } - return stubbedHTTPResultFromCacheOrBackendResult - } - - var invokedClearCaches = false - var invokedClearCachesCount = 0 - - override func clearCaches() { - invokedClearCaches = true - invokedClearCachesCount += 1 - } -} diff --git a/PurchasesTests/Mocks/MockProductsRequest.swift b/PurchasesTests/Mocks/MockProductsRequest.swift deleted file mode 100644 index cbd1a1e6cf..0000000000 --- a/PurchasesTests/Mocks/MockProductsRequest.swift +++ /dev/null @@ -1,50 +0,0 @@ -// -// Created by Andrés Boedo on 8/12/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import Foundation -import StoreKit -@testable import PurchasesCoreSwift - -class MockProductResponse: SKProductsResponse { - var mockProducts: [MockSKProduct] - - init(productIdentifiers: Set) { - self.mockProducts = productIdentifiers.map { identifier in - return MockSKProduct(mockProductIdentifier: identifier) - } - super.init() - } - - override var products: [SKProduct] { - return self.mockProducts - } -} - -enum StoreKitError: Error { - case unknown -} - -class MockProductsRequest: SKProductsRequest { - var startCalled = false - var requestedIdentifiers: Set - var fails = false - - override init(productIdentifiers: Set) { - self.requestedIdentifiers = productIdentifiers - super.init() - } - - override func start() { - startCalled = true - DispatchQueue.main.async { - if (self.fails) { - self.delegate?.request!(self, didFailWithError: StoreKitError.unknown) - } else { - let response = MockProductResponse(productIdentifiers: self.requestedIdentifiers) - self.delegate?.productsRequest(self, didReceive: response) - } - } - } -} diff --git a/PurchasesTests/Mocks/MockReceiptParser.swift b/PurchasesTests/Mocks/MockReceiptParser.swift deleted file mode 100644 index 901b922121..0000000000 --- a/PurchasesTests/Mocks/MockReceiptParser.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// Created by Andrés Boedo on 8/27/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import Foundation -@testable import PurchasesCoreSwift - -class MockReceiptParser: ReceiptParser { - - init() { - super.init(objectIdentifierBuilder: ASN1ObjectIdentifierBuilder(), - containerBuilder: ASN1ContainerBuilder(), - receiptBuilder: AppleReceiptBuilder()) - } - - var invokedReceiptHasTransactions = false - var invokedReceiptHasTransactionsCount = 0 - var invokedReceiptHasTransactionsParameters: (receiptData: Data, Void)? - var invokedReceiptHasTransactionsParametersList = [(receiptData: Data, Void)]() - var stubbedReceiptHasTransactionsResult: Bool! = false - - override func receiptHasTransactions(receiptData: Data) -> Bool { - invokedReceiptHasTransactions = true - invokedReceiptHasTransactionsCount += 1 - invokedReceiptHasTransactionsParameters = (receiptData, ()) - invokedReceiptHasTransactionsParametersList.append((receiptData, ())) - return stubbedReceiptHasTransactionsResult - } -} diff --git a/PurchasesTests/Mocks/MockSKDiscount.swift b/PurchasesTests/Mocks/MockSKDiscount.swift deleted file mode 100644 index 597c3534a4..0000000000 --- a/PurchasesTests/Mocks/MockSKDiscount.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// Created by Andrés Boedo on 6/3/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import Foundation -import StoreKit - -@available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) -class MockDiscount: SKProductDiscount { - var mockPaymentMode: SKProductDiscount.PaymentMode? - override var paymentMode: SKProductDiscount.PaymentMode { - return mockPaymentMode ?? SKProductDiscount.PaymentMode.payAsYouGo - } - - var mockPrice: NSDecimalNumber? - override var price: NSDecimalNumber { - return mockPrice ?? 1.99 - } - - var mockIdentifier: String? - override var identifier: String { - return mockIdentifier ?? "identifier" - } - - lazy var mockSubscriptionPeriod: SKProductSubscriptionPeriod? = nil - - override var subscriptionPeriod: SKProductSubscriptionPeriod { - return mockSubscriptionPeriod ?? SKProductSubscriptionPeriod(numberOfUnits: 1, unit:.month) - } -} diff --git a/PurchasesTests/Mocks/MockSKProduct.swift b/PurchasesTests/Mocks/MockSKProduct.swift deleted file mode 100644 index b8b2164e0e..0000000000 --- a/PurchasesTests/Mocks/MockSKProduct.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// Created by RevenueCat on 3/2/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import PurchasesCoreSwift -import StoreKit - -class MockSKProduct: SKProduct { - var mockProductIdentifier: String - - init(mockProductIdentifier: String, mockSubscriptionGroupIdentifier: String? = nil) { - self.mockProductIdentifier = mockProductIdentifier - self.mockSubscriptionGroupIdentifier = mockSubscriptionGroupIdentifier - super.init() - } - - override var productIdentifier: String { - return self.mockProductIdentifier - } - - var mockSubscriptionGroupIdentifier: String? - override var subscriptionGroupIdentifier: String? { - return self.mockSubscriptionGroupIdentifier; - } - - var mockPriceLocale: Locale? - override var priceLocale: Locale { - return mockPriceLocale ?? Locale(identifier: "en_US") - } - - var mockPrice: NSDecimalNumber? - override var price: NSDecimalNumber { - return mockPrice ?? 2.99 as NSDecimalNumber - } - - @available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) - override var introductoryPrice: SKProductDiscount? { - mockDiscount ?? MockDiscount() - } - - @available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) - lazy var mockDiscount: SKProductDiscount? = nil - - @available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) - override var discounts: [SKProductDiscount] { - return (mockDiscount != nil) ? [mockDiscount!] : [] - } - - @available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) - lazy var mockSubscriptionPeriod: SKProductSubscriptionPeriod? = nil - - @available(iOS 11.2, tvOS 11.2, macOS 10.13.2, *) - override var subscriptionPeriod: SKProductSubscriptionPeriod { - return mockSubscriptionPeriod ?? SKProductSubscriptionPeriod(numberOfUnits: 1, unit:.month) - } -} diff --git a/PurchasesTests/Mocks/MockTransaction.swift b/PurchasesTests/Mocks/MockTransaction.swift deleted file mode 100644 index fdf06218c1..0000000000 --- a/PurchasesTests/Mocks/MockTransaction.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// Created by RevenueCat on 3/2/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import StoreKit - -class MockTransaction: SKPaymentTransaction { - - var mockPayment: SKPayment? - override var payment: SKPayment { - get { - return mockPayment! - } - } - - var mockState = SKPaymentTransactionState.purchasing - override var transactionState: SKPaymentTransactionState { - get { - return mockState - } - } - - var mockError: Error? - override var error: Error? { - get { - return mockError - } - } -} diff --git a/PurchasesTests/Mocks/MockUserDefaults.swift b/PurchasesTests/Mocks/MockUserDefaults.swift deleted file mode 100644 index caecfe103f..0000000000 --- a/PurchasesTests/Mocks/MockUserDefaults.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// Created by RevenueCat on 2/3/20. -// Copyright (c) 2020 Purchases. All rights reserved. -// - -import Foundation - -class MockUserDefaults: UserDefaults { - - var stringForKeyCalledValue: String? = nil - var setObjectForKeyCalledValue: String? = nil - var setObjectForKeyCallCount: Int = 0 - var removeObjectForKeyCalledValues: Array = [] - var dataForKeyCalledValue: String? = nil - var objectForKeyCalledValue: String? = nil - var dictionaryForKeyCalledValue: String? = nil - var setBoolForKeyCalledValue: String? = nil - var setValueForKeyCalledValue: String? = nil - - var mockValues: [String: Any] = [:] - - override func string(forKey defaultName: String) -> String? { - stringForKeyCalledValue = defaultName - return mockValues[defaultName] as? String - } - - override func removeObject(forKey defaultName: String) { - removeObjectForKeyCalledValues.append(defaultName) - mockValues.removeValue(forKey: defaultName) - } - - override func set(_ value: Any?, forKey defaultName: String) { - setObjectForKeyCallCount += 1 - setObjectForKeyCalledValue = defaultName - mockValues[defaultName] = value - } - - override func data(forKey defaultName: String) -> Data? { - dataForKeyCalledValue = defaultName - return mockValues[defaultName] as? Data - } - - override func object(forKey defaultName: String) -> Any? { - objectForKeyCalledValue = defaultName - return mockValues[defaultName] - } - - override func set(_ value: Bool, forKey defaultName: String) { - setValueForKeyCalledValue = defaultName - mockValues[defaultName] = value - } - - override func dictionary(forKey defaultName: String) -> [String: Any]? { - dictionaryForKeyCalledValue = defaultName - return mockValues[defaultName] as? [String : Any] - } - - override func dictionaryRepresentation() -> [String: Any] { mockValues } -} diff --git a/PurchasesTests/Mocks/SKProductSubscriptionDurationExtensions.swift b/PurchasesTests/Mocks/SKProductSubscriptionDurationExtensions.swift deleted file mode 100644 index 4ba2cb8b3d..0000000000 --- a/PurchasesTests/Mocks/SKProductSubscriptionDurationExtensions.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// SKProductSubscriptionDurationExtensions.swift -// PurchasesTests -// -// Created by Andrés Boedo on 5/26/20. -// Copyright © 2020 Purchases. All rights reserved. -// - -import Foundation -import StoreKit - -@available(iOS 11.2, macOS 10.13.2, tvOS 11.2, *) -extension SKProductSubscriptionPeriod { - convenience init(numberOfUnits: Int, - unit: SKProduct.PeriodUnit) { - self.init() - self.setValue(numberOfUnits, forKey: "numberOfUnits") - self.setValue(unit.rawValue, forKey: "unit") - } -}