diff --git a/.github/workflows/build_test_upload.yml b/.github/workflows/build_test_upload.yml
index a7ce05900e..93dc79ee97 100644
--- a/.github/workflows/build_test_upload.yml
+++ b/.github/workflows/build_test_upload.yml
@@ -4,30 +4,17 @@ on:
pull_request:
types:
- opened
- - edited
- synchronize
concurrency:
- group: ${{ github.ref }}
+ group: ${{ github.ref }}-tests
cancel-in-progress: true
jobs:
- danger:
- runs-on: ubuntu-latest
- name: "Run Danger"
- steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - name: Danger
- uses: docker://ghcr.io/danger/danger-swift-with-swiftlint@sha256:ed07386a85f1328619b49e3cfd737ffce351fcd2620d858cfc997d7e3e401b59 #v3.15.0
- with:
- args: --failOnErrors --no-publish-check --remove-previous-comments
- env:
- GITHUB_TOKEN: ${{ github.token }}
- unit-test:
- needs: danger
+ debug-app-unit-tests:
runs-on: macos-13-large
timeout-minutes: 30
- name: "Unit Tests"
+ name: "Debug App - Unit Tests"
steps:
- name: Git - Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -62,11 +49,10 @@ jobs:
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
SOURCE_BRANCH: ${{ github.head_ref }}
- spm-build:
- needs: unit-test
- runs-on: macos-13
+ sdk-unit-tests:
+ runs-on: macos-13-large
timeout-minutes: 20
- name: "Build app with SPM Integration"
+ name: "SDK - Unit Tests"
steps:
- name: Cancel previous jobs
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1
@@ -79,7 +65,7 @@ jobs:
- name: Select Xcode Version
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
with:
- xcode-version: '14.3.1'
+ xcode-version: '15.2'
- name: Install SSH key
uses: shimataro/ssh-key-action@d4fffb50872869abe2d9a9098a6d9c5aa7d16be4 #v2.7.0
with:
@@ -95,7 +81,7 @@ jobs:
bundler-cache: true
- name: Build SPM App
run: |
- bundle exec fastlane build_spm
+ bundle exec fastlane test_spm
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
@@ -105,7 +91,9 @@ jobs:
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
SOURCE_BRANCH: ${{ github.head_ref }}
build-and-upload-to-appetize:
- needs: unit-test
+ needs:
+ - debug-app-unit-tests
+ - sdk-unit-tests
runs-on: macos-13
timeout-minutes: 45
name: "Build and upload app to Appetize"
diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml
new file mode 100644
index 0000000000..b1b6a934b7
--- /dev/null
+++ b/.github/workflows/danger.yml
@@ -0,0 +1,25 @@
+name: Danger
+
+on:
+ pull_request:
+ types:
+ - opened
+ - edited
+ - synchronize
+
+concurrency:
+ group: ${{ github.ref }}-danger
+ cancel-in-progress: true
+
+jobs:
+ danger:
+ runs-on: ubuntu-latest
+ name: "Run Danger"
+ steps:
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - name: Danger
+ uses: docker://ghcr.io/danger/danger-swift-with-swiftlint@sha256:ed07386a85f1328619b49e3cfd737ffce351fcd2620d858cfc997d7e3e401b59 #v3.15.0
+ with:
+ args: --failOnErrors --no-publish-check --remove-previous-comments
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
\ No newline at end of file
diff --git a/.github/workflows/pod_lint.yml b/.github/workflows/pod_lint.yml
index 896c4d1546..621a5778a3 100644
--- a/.github/workflows/pod_lint.yml
+++ b/.github/workflows/pod_lint.yml
@@ -4,7 +4,6 @@ on:
pull_request:
types:
- opened
- - edited
- synchronize
jobs:
diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml
index cc99929e26..97ca09687f 100644
--- a/.github/workflows/sonarcloud.yml
+++ b/.github/workflows/sonarcloud.yml
@@ -1,10 +1,12 @@
name: Sonarcloud
+
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
+
jobs:
sonarcloud:
name: SonarCloud
diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/PrimerSDKTests.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/PrimerSDKTests.xcscheme
new file mode 100644
index 0000000000..a026ae7f37
--- /dev/null
+++ b/.swiftpm/xcode/xcshareddata/xcschemes/PrimerSDKTests.xcscheme
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Dangerfile.swift b/Dangerfile.swift
index 58bce0626a..3e315247a4 100644
--- a/Dangerfile.swift
+++ b/Dangerfile.swift
@@ -9,7 +9,7 @@ let allCreatedAndModifiedFiles = danger.git.modifiedFiles + danger.git.createdFi
let sdkEditedFiles = allCreatedAndModifiedFiles
.filter { $0.name != "Dangerfile.swift" }
.filter { !$0.hasPrefix("Debug App/") }
-
+ .filter { !$0.hasPrefix("Tests/") }
// You can use these functions to send feedback:
// message("Highlight something in the table")
// warn("Something pretty bad, but not important enough to fail the build")
diff --git a/Debug App/Podfile.lock b/Debug App/Podfile.lock
index aedd9a9a6b..0a336365d9 100644
--- a/Debug App/Podfile.lock
+++ b/Debug App/Podfile.lock
@@ -4,9 +4,9 @@ PODS:
- PrimerIPay88MYSDK (0.1.7)
- PrimerKlarnaSDK (1.1.1)
- PrimerNolPaySDK (1.0.1)
- - PrimerSDK (2.26.1):
- - PrimerSDK/Core (= 2.26.1)
- - PrimerSDK/Core (2.26.1)
+ - PrimerSDK (2.26.2):
+ - PrimerSDK/Core (= 2.26.2)
+ - PrimerSDK/Core (2.26.2)
DEPENDENCIES:
- IQKeyboardManagerSwift
@@ -34,7 +34,7 @@ SPEC CHECKSUMS:
PrimerIPay88MYSDK: 436ee0be7e2c97e4e81456ccddee20175e9e3c4d
PrimerKlarnaSDK: 564105170cc7b467bf95c31851813ea41c468f8b
PrimerNolPaySDK: 08b140ed39b378a0b33b4f8746544a402175c0cc
- PrimerSDK: 713186fdff6edb8c769b0d7fe67171b762c62437
+ PrimerSDK: 31a56fb3a0d12210e55a8c5af8b9382e7cffdc83
PODFILE CHECKSUM: 4070d0f559c86f4414e465a26e3de7b095420546
diff --git a/Debug App/Primer.io Debug App SPM.xcodeproj/project.pbxproj b/Debug App/Primer.io Debug App SPM.xcodeproj/project.pbxproj
index 97c4100a7b..82cb62e269 100644
--- a/Debug App/Primer.io Debug App SPM.xcodeproj/project.pbxproj
+++ b/Debug App/Primer.io Debug App SPM.xcodeproj/project.pbxproj
@@ -83,8 +83,6 @@
1B8CB5A11A44AA9F3D7FE356 /* UserInterfaceModuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInterfaceModuleTests.swift; sourceTree = ""; };
1D05E65C196E6715D7D8B0C6 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Main.strings; sourceTree = ""; };
1F23211288F9B61390C0BF8D /* Pods_Debug_App_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 1F4E35F809D3FAF4354D5B05 /* URLSessionStackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionStackTests.swift; sourceTree = ""; };
- 1F79B50111AC4161CFB1EFE8 /* ApayaTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApayaTests.swift; sourceTree = ""; };
229849A3DBE0858EE90673B9 /* CreateClientToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateClientToken.swift; sourceTree = ""; };
25FD540BEA16ABBDFE7DE182 /* PayPalService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPalService.swift; sourceTree = ""; };
2A328E38DA586FFE0ED2894B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; };
@@ -145,7 +143,6 @@
A1604A656AF654D7422A2A5E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Main.strings; sourceTree = ""; };
A6AEF11B151368BF993C3EA9 /* TestScenario.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestScenario.swift; sourceTree = ""; };
AD381E7E16D01D8D743232F7 /* ThemeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeTests.swift; sourceTree = ""; };
- AF07D2421252EA2AE5C2FC4F /* AnalyticsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsTests.swift; sourceTree = ""; };
B18D7E7738BF86467B0F1465 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
B1FD8065D40A2D691F643F3B /* UIViewController+API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+API.swift"; sourceTree = ""; };
B266F9E1651BD20E45DCCF68 /* PrimerRawRetailerDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerRawRetailerDataTests.swift; sourceTree = ""; };
@@ -176,7 +173,6 @@
E63F5C5C1FD2F3E6CB02EC5A /* HeadlessUniversalCheckoutTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlessUniversalCheckoutTests.swift; sourceTree = ""; };
E7640DB186F9638C2F556F77 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Main.strings; sourceTree = ""; };
E8DE1E4FB055B60582977315 /* Networking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Networking.swift; sourceTree = ""; };
- E90441E821B5FE76643B62A6 /* AnalyticsTests+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AnalyticsTests+Constants.swift"; sourceTree = ""; };
E9899972360BCA5992CEE5BC /* PrimerBancontactCardDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerBancontactCardDataManagerTests.swift; sourceTree = ""; };
EB6C18F747AEC20B8C63164C /* Pods_Debug_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
EEB1E1B37192BF739461AFF1 /* PrimerRawCardDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerRawCardDataManagerTests.swift; sourceTree = ""; };
@@ -267,7 +263,6 @@
2F23D3C9CC9CBC1B95329B1C /* Network */ = {
isa = PBXGroup;
children = (
- 1F4E35F809D3FAF4354D5B05 /* URLSessionStackTests.swift */,
);
path = Network;
sourceTree = "";
@@ -429,7 +424,6 @@
D83EED4C1249B62B908781B0 /* Data Models */ = {
isa = PBXGroup;
children = (
- 1F79B50111AC4161CFB1EFE8 /* ApayaTests.swift */,
31CFA93A373A7DB78DA77283 /* ApplePayTests.swift */,
5F8DC3341BDBB9AEDBE8D6DD /* DecodedClientToken.swift */,
7A5E6F7A9C12C69CB66032E3 /* IPay88Tests.swift */,
@@ -447,7 +441,6 @@
D99811C39E1808A948623732 /* Unit Tests */ = {
isa = PBXGroup;
children = (
- E1A2F78003351E14426E0B36 /* Analytics */,
D83EED4C1249B62B908781B0 /* Data Models */,
626776D8EFEF24D5C5A36307 /* Extensions */,
A95565BDB7031F41ECD023D7 /* Helpers */,
@@ -511,15 +504,6 @@
path = FormWithRedirect;
sourceTree = "";
};
- E1A2F78003351E14426E0B36 /* Analytics */ = {
- isa = PBXGroup;
- children = (
- AF07D2421252EA2AE5C2FC4F /* AnalyticsTests.swift */,
- E90441E821B5FE76643B62A6 /* AnalyticsTests+Constants.swift */,
- );
- path = Analytics;
- sourceTree = "";
- };
E4C8DBB82E4149A7C4D26467 /* Mocks */ = {
isa = PBXGroup;
children = (
diff --git a/Debug App/Primer.io Debug App.xcodeproj/project.pbxproj b/Debug App/Primer.io Debug App.xcodeproj/project.pbxproj
index 15f6cffc10..c0c496cca9 100644
--- a/Debug App/Primer.io Debug App.xcodeproj/project.pbxproj
+++ b/Debug App/Primer.io Debug App.xcodeproj/project.pbxproj
@@ -7,145 +7,55 @@
objects = {
/* Begin PBXBuildFile section */
- 0402B7B62AFBBA7200B02C75 /* CardNetworkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0402B7B52AFBBA7200B02C75 /* CardNetworkTests.swift */; };
- 0402B7B82AFBBC2200B02C75 /* ApplePayUtilsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0402B7B72AFBBC2200B02C75 /* ApplePayUtilsTest.swift */; };
041295AA2AB9E25D00A4F243 /* MerchantHeadlessCheckoutNolPayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041295A92AB9E25D00A4F243 /* MerchantHeadlessCheckoutNolPayViewController.swift */; };
- 041295AD2AB9E2C100A4F243 /* PrimerHeadlessNolPayManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041295AB2AB9E2A900A4F243 /* PrimerHeadlessNolPayManagerTests.swift */; };
- 041F52092ADE92A300A1D702 /* ListCardNetworksEndpointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041F52082ADE92A300A1D702 /* ListCardNetworksEndpointTests.swift */; };
- 04236A9B2B7D2EA50041EC11 /* JWTFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04236A9A2B7D2EA50041EC11 /* JWTFactory.swift */; };
- 042ED15D2AF010500027833F /* CardValidationServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 042ED15C2AF010500027833F /* CardValidationServiceTests.swift */; };
- 042ED1622AF0F5600027833F /* MockBINDataAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 042ED1612AF0F5600027833F /* MockBINDataAPIClient.swift */; };
- 042ED1652AF0F5FD0027833F /* MockRawDataManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 042ED1642AF0F5FD0027833F /* MockRawDataManagerDelegate.swift */; };
- 0442B6472B7BA4C7004DB054 /* MockPrimerAPIAnalyticsClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0442B6452B7BA498004DB054 /* MockPrimerAPIAnalyticsClient.swift */; };
- 0442B6492B7BA4CD004DB054 /* MockAnalyticsStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0442B6432B7BA477004DB054 /* MockAnalyticsStorage.swift */; };
- 044348DE2BB5B3D80072D97C /* DefaultNetworkServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044348DD2BB5B3D80072D97C /* DefaultNetworkServiceTests.swift */; };
- 04769C152B1A680C0051581C /* Promises+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04769C142B1A680C0051581C /* Promises+Helper.swift */; };
- 0479FB192AF2599A00D0AFC9 /* StringTyper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0479FB172AF2599200D0AFC9 /* StringTyper.swift */; };
- 047D8E892ADEA4C700A5E7BD /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047D8E882ADEA4C700A5E7BD /* NetworkService.swift */; };
- 047EE2022BB47B1B006C775C /* NetworkingReportingServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 047EE2012BB47B1B006C775C /* NetworkingReportingServiceTests.swift */; };
- 0488648B2BA88F63007BCDA6 /* NetworkRequestFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0488648A2BA88F63007BCDA6 /* NetworkRequestFactoryTests.swift */; };
- 0488648D2BA89402007BCDA6 /* CodingUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0488648C2BA89402007BCDA6 /* CodingUtilities.swift */; };
- 0488648F2BA89E04007BCDA6 /* NetworkResponseFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0488648E2BA89E04007BCDA6 /* NetworkResponseFactoryTests.swift */; };
0489E2BB2B68F71300FA0682 /* TapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0489E2BA2B68F71300FA0682 /* TapGestureRecognizer.swift */; };
- 049298012B1DD466002E04B8 /* AnalyticsServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049298002B1DD466002E04B8 /* AnalyticsServiceTests.swift */; };
- 049298072B1E1F4D002E04B8 /* AnalyticsStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049298062B1E1F4D002E04B8 /* AnalyticsStorageTests.swift */; };
049A055E2B4BF057002CEEBA /* MerchantHeadlessVaultManagerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049A055D2B4BF057002CEEBA /* MerchantHeadlessVaultManagerViewController.swift */; };
- 049A05602B4C191D002CEEBA /* NativeUIManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 049A055F2B4C191D002CEEBA /* NativeUIManagerTests.swift */; };
- 04A153CF2BC40CE10018D805 /* RequestDispatcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A153CE2BC40CE10018D805 /* RequestDispatcherTests.swift */; };
- 04DAAED42B03EED1002E2614 /* AssetsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DAAED32B03EED1002E2614 /* AssetsManagerTests.swift */; };
- 04DAAED62B03EF0B002E2614 /* SDKSessionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04DAAED52B03EF0B002E2614 /* SDKSessionHelper.swift */; };
- 04DFAADC2AAA01E60030FECE /* Debug App Tests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 04DFAADB2AAA01E60030FECE /* Debug App Tests-Info.plist */; };
- 04F6EF742AE6A06200115D05 /* AnalyticsEventsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F6EF732AE6A06200115D05 /* AnalyticsEventsTests.swift */; };
- 04FAF9EC2AE7B33E002E4BAE /* StringExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FAF9EB2AE7B33E002E4BAE /* StringExtensionTests.swift */; };
- 05290163DCB52E50E29AF612 /* Pods_Debug_App_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82C5808E70210187BAEC47B1 /* Pods_Debug_App_Tests.framework */; };
- 05FAC0D894B841B52E9E0A9A /* PrimerRawCardDataManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEB1E1B37192BF739461AFF1 /* PrimerRawCardDataManagerTests.swift */; };
- 088961D00784BD296EA9745C /* EncodingDecodingContainerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D8E1E91CA11EC6831ADEE4 /* EncodingDecodingContainerTests.swift */; };
+ 04F3235C2BD2F99000F5927C /* UIApplication+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F3235B2BD2F99000F5927C /* UIApplication+Extensions.swift */; };
+ 04F323612BD408C600F5927C /* AppetizeConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F3235D2BD408C600F5927C /* AppetizeConfigTests.swift */; };
+ 04F323622BD408C600F5927C /* Debug App Tests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 04F3235E2BD408C600F5927C /* Debug App Tests-Info.plist */; };
+ 04F323632BD408C600F5927C /* MetadataParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F3235F2BD408C600F5927C /* MetadataParserTests.swift */; };
+ 04F323642BD409FE00F5927C /* BanksListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47512B06C5030091C31F /* BanksListModel.swift */; };
+ 04F323652BD40A0E00F5927C /* MerchantHeadlessCheckoutBankViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E129D66F2B162022004694F9 /* MerchantHeadlessCheckoutBankViewController.swift */; };
+ 04F323662BD40A2300F5927C /* MerchantNewLineItemViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED746F8924E70AD868BC0F4 /* MerchantNewLineItemViewController.swift */; };
0BB8BB3F9A6AC28A0C107DC8 /* UIStackViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93F15C1E46C70C3D73B50F31 /* UIStackViewExtensions.swift */; };
135E5BFD51371FABB5FF35D3 /* MerchantHeadlessCheckoutAvailablePaymentMethodsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72E691B9A6A8EBB9F6A6B266 /* MerchantHeadlessCheckoutAvailablePaymentMethodsViewController.swift */; };
14EE32F4821BD1F19F75227F /* MerchantHeadlessCheckoutRawRetailDataViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C353D84EABA4990DAB4DD28 /* MerchantHeadlessCheckoutRawRetailDataViewController.swift */; };
- 1589385B62C86DE7C735F3EC /* PrimerAPIConfigurationModuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C690FB7E6E8C942C87B1A1B /* PrimerAPIConfigurationModuleTests.swift */; };
- 161D4BE3FFD5E4A60F4461F0 /* CreateResumePaymentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DD0A9535544D446514124A /* CreateResumePaymentService.swift */; };
- 208CA849F3187C2DA63CC17B /* HUC_TokenizationViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A5E3ACDA26D44F66B55766B /* HUC_TokenizationViewModelTests.swift */; };
- 213196DEDF2A3A84037ED884 /* PollingModuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DFB1ACD5014BF28ED283B3 /* PollingModuleTests.swift */; };
- 242EF5037D6FB396B7AE1CB5 /* HeadlessUniversalCheckoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E63F5C5C1FD2F3E6CB02EC5A /* HeadlessUniversalCheckoutTests.swift */; };
- 24C060A48D4A2670FFC3426F /* ThreeDSErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8639891B79E2FCCE10A510 /* ThreeDSErrorTests.swift */; };
- 25FA73D4BBA89962663B5378 /* Mocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4AC1EC0F98CB56DA4D075CA /* Mocks.swift */; };
- 2662EB3445AE8C7188953EFD /* HeadlessVaultManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AA706A14BACFDB8E5715788 /* HeadlessVaultManagerTests.swift */; };
- 2C98B33ECA68109C7A6AA134 /* PrimerBancontactCardDataManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9899972360BCA5992CEE5BC /* PrimerBancontactCardDataManagerTests.swift */; };
- 2E0D85B7343377F1319902AD /* MockPaymentMethodTokenizationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A23886804B13FA754E775D0 /* MockPaymentMethodTokenizationViewModel.swift */; };
- 33EA4F728A7984997A0EF515 /* TokenizationServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 952364FBFD6FA09653ECA37E /* TokenizationServiceTests.swift */; };
34CDCA7B403C001E4C55D26D /* MerchantSessionAndSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18C9664115CFDEB59FED19A /* MerchantSessionAndSettingsViewController.swift */; };
- 3BB02CA24B6B3EF458326B7D /* Networking.swift in Sources */ = {isa = PBXBuildFile; fileRef = D038BDB23C062D362AAA09BE /* Networking.swift */; };
- 3D112A8DE292D097E651FCDB /* IPay88Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A5E6F7A9C12C69CB66032E3 /* IPay88Tests.swift */; };
- 3EE90DEB1DB7BE9270FB17BF /* URLSessionStackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E35F809D3FAF4354D5B05 /* URLSessionStackTests.swift */; };
- 3FD160A4D951EA772ADF4E25 /* DecodedClientToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F8DC3341BDBB9AEDBE8D6DD /* DecodedClientToken.swift */; };
- 4BD7794627267B40E9E10686 /* PrimerCheckoutTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9813BD518AC7C3F442B5075 /* PrimerCheckoutTheme.swift */; };
53E3182FFC4E5F05D866CFAE /* Networking.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8DE1E4FB055B60582977315 /* Networking.swift */; };
- 583EBAA90902121CEA479416 /* VaultService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E8D7F3C53F8CCE4A03C975E /* VaultService.swift */; };
592E00D98C8835CBCDAA26D9 /* MerchantDropInUIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9874F439DA3EA5854A454687 /* MerchantDropInUIViewController.swift */; };
- 5976CCA261F0811F5D7707DA /* TokenizationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8F69253D85350BB7A1A761 /* TokenizationService.swift */; };
5E24CD5B3084FE3E8A3E85EC /* CheckoutTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72845A3010F10A88F2EC7849 /* CheckoutTheme.swift */; };
60F6C3AFA11A7EDB0687856A /* ViewController+PrimerUIHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4139D8F153BB399DA67F2EE /* ViewController+PrimerUIHelpers.swift */; };
60F7E716B34BE721651566DA /* Data+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1594BC5C96ECC3F46C811B2F /* Data+Extensions.swift */; };
- 622A605DDEA98D981670B53F /* DropInUI_TokenizationViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DB3B88857B810440CDA881E /* DropInUI_TokenizationViewModelTests.swift */; };
- 6B2212601374387CB004DA86 /* MaskTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD26E8C6074BB89ACBD5B8B9 /* MaskTests.swift */; };
- 70EAA3B33425CC9D16239BB0 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31CFA93A373A7DB78DA77283 /* ApplePayTests.swift */; };
72F8D6065334FCD5B726A52C /* MerchantHeadlessCheckoutRawPhoneNumberDataViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 404E173A513B986A36F835F7 /* MerchantHeadlessCheckoutRawPhoneNumberDataViewController.swift */; };
- 77A8EFBA78D6C6B95A400C74 /* WebViewUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA30891B2D5F9B6B97E56B99 /* WebViewUtilTests.swift */; };
- 7F49B29FCC55CF3C5CB6C506 /* InternalCardComponentManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 994AE6760B506D02499AEC90 /* InternalCardComponentManagerTests.swift */; };
- 800B92A57CAAC6471D01A89D /* CardData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3D9154BF1E011FED6799CD5 /* CardData.swift */; };
- 8064B65A8F83D5B004D081FD /* PaymentMethodConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752785ACCF65527C239391A8 /* PaymentMethodConfigTests.swift */; };
85605C241F1CD45BA676D4A7 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9023841AFCE8E3205CB713A /* String+Extensions.swift */; };
85EDC3F175D699BFF6BD48EF /* ViewController+Primer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CCCB917D1881082ED75975 /* ViewController+Primer.swift */; };
876140D52B63F7DB0058CA8C /* MerchantHeadlessCheckoutKlarnaViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140D42B63F7DB0058CA8C /* MerchantHeadlessCheckoutKlarnaViewController.swift */; };
- 876140D82B66F8070058CA8C /* KlarnaTestsMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140D72B66F8070058CA8C /* KlarnaTestsMocks.swift */; };
- 876140DE2B66F86A0058CA8C /* KlarnaComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140DD2B66F86A0058CA8C /* KlarnaComponentTests.swift */; };
- 876140E22B66F89D0058CA8C /* KlarnaHeadlessManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140E12B66F89D0058CA8C /* KlarnaHeadlessManagerTests.swift */; };
876140E62B67F3B30058CA8C /* MerchantHeadlessCheckoutKlarnaViewController+Klarna.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140E52B67F3B30058CA8C /* MerchantHeadlessCheckoutKlarnaViewController+Klarna.swift */; };
876140EF2B6BE8C20058CA8C /* MerchantHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140EE2B6BE8C20058CA8C /* MerchantHelpers.swift */; };
- 876140F42B70FBFE0058CA8C /* KlarnaTokenizationComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140F32B70FBFE0058CA8C /* KlarnaTokenizationComponentTests.swift */; };
- 876140F62B716E060058CA8C /* KlarnaTokenizationManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876140F52B716E060058CA8C /* KlarnaTokenizationManagerTests.swift */; };
876141082B8346650058CA8C /* MerchantHeadlessKlarnaInitializationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876141072B8346650058CA8C /* MerchantHeadlessKlarnaInitializationView.swift */; };
8761410A2B8355920058CA8C /* MerchantHeadlessKlarnaInitializationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 876141092B8355920058CA8C /* MerchantHeadlessKlarnaInitializationViewModel.swift */; };
8761410C2B849A250058CA8C /* MerchantHeadlessKlarnaInitializationView+Elements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8761410B2B849A250058CA8C /* MerchantHeadlessKlarnaInitializationView+Elements.swift */; };
- 87DF3EC72BA871BD00162100 /* PrimerKlarnaCategoriesViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DF3EC62BA871BD00162100 /* PrimerKlarnaCategoriesViewControllerTests.swift */; };
- 8B5CB0C992DBAB293D378FAD /* MockModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA7D2BB0AC0A1877DB2E6CE /* MockModule.swift */; };
- 91FAC91E687B6981268E677E /* DateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA0B2BEE5C389FD13E210847 /* DateTests.swift */; };
- 9263BD762EC26F6AA986F0C9 /* MockAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17476BFBED51F389FCE82F16 /* MockAPIClient.swift */; };
949864026D1CDE6F5C62C66E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE259612A00F85709107B872 /* Main.storyboard */; };
- 961B5D18058EF4CFCD0185AE /* MockVaultCheckoutViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A3E75CD834937EF85DE1C14 /* MockVaultCheckoutViewModel.swift */; };
- 97F0B302DF965C1AD1EC6F4D /* PaymentMethodConfigServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 743F107C464526926A34A433 /* PaymentMethodConfigServiceTests.swift */; };
- A1055D6F2AF125E90027B967 /* DebouncerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1055D6E2AF125E90027B967 /* DebouncerTests.swift */; };
- A12AC2532B5046CF00C26999 /* CurrencyStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A12AC2522B5046CF00C26999 /* CurrencyStorageTests.swift */; };
- A12AC2552B505B6200C26999 /* CurrencyLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A12AC2542B505B6100C26999 /* CurrencyLoaderTests.swift */; };
- A13392BC2AD459E90005A4D7 /* NolPayLinkCardComponentTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A13392BB2AD459E90005A4D7 /* NolPayLinkCardComponentTest.swift */; };
- A1536BAD2AEBEC3A0087DDC0 /* NolPayPhoneMetadataServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1536BAC2AEBEC3A0087DDC0 /* NolPayPhoneMetadataServiceTests.swift */; };
- A1536BAF2AEC0A6D0087DDC0 /* NolTestsMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1536BAE2AEC0A6D0087DDC0 /* NolTestsMocks.swift */; };
- A1585C752ACDAA700014F0B9 /* NolPayLinkedCardsComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1585C742ACDAA700014F0B9 /* NolPayLinkedCardsComponentTests.swift */; };
- A19CB17B2BAA129900DB4326 /* CVVRecaptureViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A19CB17A2BAA129900DB4326 /* CVVRecaptureViewModelTests.swift */; };
A19EF5632B20E22E00A72F60 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = A19EF5622B20E22E00A72F60 /* .swiftlint.yml */; };
- A1A3D0F32AD5585A00F7D8C9 /* NolPayUnlinkCardComponentTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A3D0F22AD5585A00F7D8C9 /* NolPayUnlinkCardComponentTest.swift */; };
- A1A3D0F52AD56BE300F7D8C9 /* NolPayPaymentComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A3D0F42AD56BE300F7D8C9 /* NolPayPaymentComponentTests.swift */; };
- A39750255D4C33527A3766A0 /* UserInterfaceModuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8CB5A11A44AA9F3D7FE356 /* UserInterfaceModuleTests.swift */; };
- A61B9E61EDCE18D34438352E /* PayPalConfirmBillingAgreementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D122A0B71B707C2110AB7F5 /* PayPalConfirmBillingAgreementTests.swift */; };
AAE3B30B64B6822A20987FCA /* CreateClientToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 229849A3DBE0858EE90673B9 /* CreateClientToken.swift */; };
AD9CF1073EE0676E6640481A /* MerchantHeadlessCheckoutRawDataViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B866FF13033A5CB8B4C3388E /* MerchantHeadlessCheckoutRawDataViewController.swift */; };
+ B15DB155FF963676B88B96BF /* Pods_Debug_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E07ED300DA4DBEB8D2BF520D /* Pods_Debug_App.framework */; };
+ BAEBC22D052C55BD8EC53C6B /* Pods_Debug_App_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0FD41735810826EB829619C /* Pods_Debug_App_Tests.framework */; };
C0115AC7BC96FDF49EF8E530 /* PaymentMethodCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E79C93EA805E87E1137A513 /* PaymentMethodCell.swift */; };
- C29B625B5698094691227852 /* TokenizationResponseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A003705AFF7F922BCFE75F /* TokenizationResponseTests.swift */; };
- C6D7F7ECFD35B3DC3AFD6CB2 /* PayPalService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FD540BEA16ABBDFE7DE182 /* PayPalService.swift */; };
C75A11E6AEEFC2B7A29BBC04 /* TestScenario.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6AEF11B151368BF993C3EA9 /* TestScenario.swift */; };
- C8A64A69AD55D9BF82F0D876 /* StringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 872A0647D4136E27365FB7F8 /* StringTests.swift */; };
CE5E673A96BB5B96AE5EFC56 /* Range+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9128566126AA7F571FFECA3A /* Range+Extensions.swift */; };
- D649870C2D022B4063BDC0B4 /* PrimerRawRetailerDataTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B266F9E1651BD20E45DCCF68 /* PrimerRawRetailerDataTests.swift */; };
D886D8E47D883304B505CE11 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5687FF32E8661F1A00CE5 /* AppDelegate.swift */; };
- DB1A2989DDE0928C62B15303 /* PayPalServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D7EC742DEB5BE12252E3E5B /* PayPalServiceTests.swift */; };
- DC98712939835FB79A20BD63 /* IntExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9314E0A4E884A8228611A030 /* IntExtensionTests.swift */; };
DE53DA2D0AD108306C92E198 /* UIViewController+API.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1FD8065D40A2D691F643F3B /* UIViewController+API.swift */; };
- E108F58E2B0D4F0800EC3CC6 /* WebRedirectComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E108F58D2B0D4F0800EC3CC6 /* WebRedirectComponentTests.swift */; };
- E11F473D2B0694C50091C31F /* PrimerHeadlessFormWithRedirectManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F473C2B0694C50091C31F /* PrimerHeadlessFormWithRedirectManagerTests.swift */; };
- E11F47482B06C4E30091C31F /* MerchantHeadlessCheckoutBankViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47422B06C4E30091C31F /* MerchantHeadlessCheckoutBankViewController.swift */; };
- E11F474A2B06C4E30091C31F /* BanksListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47442B06C4E30091C31F /* BanksListModel.swift */; };
- E11F474C2B06C4E30091C31F /* MerchantNewLineItemViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47462B06C4E30091C31F /* MerchantNewLineItemViewController.swift */; };
E11F47542B06C5030091C31F /* BanksListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47502B06C5030091C31F /* BanksListView.swift */; };
E11F47562B06C5030091C31F /* ImageViewWithUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11F47522B06C5030091C31F /* ImageViewWithUrl.swift */; };
- E130C3D92AFD19FF00AC3E7C /* NetworkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E130C3D82AFD19FF00AC3E7C /* NetworkTests.swift */; };
- E13E72452AFE653000911866 /* IdealPaymentMethodTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13E72442AFE653000911866 /* IdealPaymentMethodTests.swift */; };
E1A2971F2B021ABA005ADA51 /* URL+NetworkHeaders.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AB44D12AFE13AF00639DC5 /* URL+NetworkHeaders.swift */; };
- E1A297262B036AB1005ADA51 /* BankComponentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A297252B036AB1005ADA51 /* BankComponentTests.swift */; };
- E1E502B12AFE9ECF00CD7F0A /* XCTestCase+Tokenization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E502B02AFE9ECF00CD7F0A /* XCTestCase+Tokenization.swift */; };
- E6F85ECD80B64754E7A6D35E /* RawDataManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7C082270CF1C6B7810F9B3 /* RawDataManagerTests.swift */; };
EA7FAA4F8476BD3711D628CB /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B18D7E7738BF86467B0F1465 /* Images.xcassets */; };
F02F496FD20B5291C044F62C /* MerchantResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E3C8FE62D22147335F2455 /* MerchantResultViewController.swift */; };
- F03699592AC2E63700E4179D /* (null) in Sources */ = {isa = PBXBuildFile; };
+ F03699592AC2E63700E4179D /* BuildFile in Sources */ = {isa = PBXBuildFile; };
F08F63D82B9B5A7C006EF9A9 /* SessionConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08F63D72B9B5A7C006EF9A9 /* SessionConfiguration.swift */; };
F08F63DA2B9B5BC5006EF9A9 /* AppetizeConfigProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08F63D92B9B5BC5006EF9A9 /* AppetizeConfigProvider.swift */; };
F08F63DC2B9F27B0006EF9A9 /* MetadataParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08F63DB2B9F27B0006EF9A9 /* MetadataParser.swift */; };
- F08F63DE2B9F27F4006EF9A9 /* MetadataParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08F63DD2B9F27F4006EF9A9 /* MetadataParserTests.swift */; };
- F08F63E62BA0BF0C006EF9A9 /* AppetizeConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08F63E52BA0BF0C006EF9A9 /* AppetizeConfigTests.swift */; };
F0C2147F6FA26527BE55549A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = FC701AFD94F96F0F1D108D1A /* LaunchScreen.xib */; };
- F1A71C2E0D900FEB9AF1351C /* ThreeDSProtocolVersionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 021A00DEB01A46C876592575 /* ThreeDSProtocolVersionTests.swift */; };
- F4141A68EA2AFAD82959B4CC /* Pods_Debug_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A2886D1F7D43E091FD80419 /* Pods_Debug_App.framework */; };
- F99DAF50E86E6F8CCD127E5B /* ThemeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD381E7E16D01D8D743232F7 /* ThemeTests.swift */; };
FD5ADBCFA70DB606339F3AF2 /* TransactionResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D3D6CF0F006A06B7CEC71B /* TransactionResponse.swift */; };
/* End PBXBuildFile section */
@@ -185,73 +95,34 @@
/* Begin PBXFileReference section */
00E3C8FE62D22147335F2455 /* MerchantResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantResultViewController.swift; sourceTree = ""; };
01C09DEAB07F42004B26A278 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/LaunchScreen.strings"; sourceTree = ""; };
- 021A00DEB01A46C876592575 /* ThreeDSProtocolVersionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeDSProtocolVersionTests.swift; sourceTree = ""; };
- 0402B7B52AFBBA7200B02C75 /* CardNetworkTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardNetworkTests.swift; sourceTree = ""; };
- 0402B7B72AFBBC2200B02C75 /* ApplePayUtilsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplePayUtilsTest.swift; sourceTree = ""; };
041295A92AB9E25D00A4F243 /* MerchantHeadlessCheckoutNolPayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutNolPayViewController.swift; sourceTree = ""; };
- 041295AB2AB9E2A900A4F243 /* PrimerHeadlessNolPayManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrimerHeadlessNolPayManagerTests.swift; sourceTree = ""; };
- 041F52082ADE92A300A1D702 /* ListCardNetworksEndpointTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListCardNetworksEndpointTests.swift; sourceTree = ""; };
- 04236A9A2B7D2EA50041EC11 /* JWTFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JWTFactory.swift; sourceTree = ""; };
- 042ED15C2AF010500027833F /* CardValidationServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardValidationServiceTests.swift; sourceTree = ""; };
- 042ED1612AF0F5600027833F /* MockBINDataAPIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockBINDataAPIClient.swift; sourceTree = ""; };
- 042ED1642AF0F5FD0027833F /* MockRawDataManagerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRawDataManagerDelegate.swift; sourceTree = ""; };
- 0442B6432B7BA477004DB054 /* MockAnalyticsStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAnalyticsStorage.swift; sourceTree = ""; };
- 0442B6452B7BA498004DB054 /* MockPrimerAPIAnalyticsClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPrimerAPIAnalyticsClient.swift; sourceTree = ""; };
- 044348DD2BB5B3D80072D97C /* DefaultNetworkServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultNetworkServiceTests.swift; sourceTree = ""; };
- 04769C142B1A680C0051581C /* Promises+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promises+Helper.swift"; sourceTree = ""; };
- 0479FB172AF2599200D0AFC9 /* StringTyper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringTyper.swift; sourceTree = ""; };
- 047D8E882ADEA4C700A5E7BD /* NetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = ""; };
- 047EE2012BB47B1B006C775C /* NetworkingReportingServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkingReportingServiceTests.swift; sourceTree = ""; };
- 0488648A2BA88F63007BCDA6 /* NetworkRequestFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkRequestFactoryTests.swift; sourceTree = ""; };
- 0488648C2BA89402007BCDA6 /* CodingUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodingUtilities.swift; sourceTree = ""; };
- 0488648E2BA89E04007BCDA6 /* NetworkResponseFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResponseFactoryTests.swift; sourceTree = ""; };
0489E2BA2B68F71300FA0682 /* TapGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapGestureRecognizer.swift; sourceTree = ""; };
- 049298002B1DD466002E04B8 /* AnalyticsServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsServiceTests.swift; sourceTree = ""; };
- 049298062B1E1F4D002E04B8 /* AnalyticsStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsStorageTests.swift; sourceTree = ""; };
049A055D2B4BF057002CEEBA /* MerchantHeadlessVaultManagerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessVaultManagerViewController.swift; sourceTree = ""; };
- 049A055F2B4C191D002CEEBA /* NativeUIManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeUIManagerTests.swift; sourceTree = ""; };
- 04A153CE2BC40CE10018D805 /* RequestDispatcherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestDispatcherTests.swift; sourceTree = ""; };
- 04DAAED32B03EED1002E2614 /* AssetsManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetsManagerTests.swift; sourceTree = ""; };
- 04DAAED52B03EF0B002E2614 /* SDKSessionHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDKSessionHelper.swift; sourceTree = ""; };
- 04DFAADB2AAA01E60030FECE /* Debug App Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Debug App Tests-Info.plist"; sourceTree = ""; };
- 04F6EF732AE6A06200115D05 /* AnalyticsEventsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsEventsTests.swift; sourceTree = ""; };
- 04FAF9EB2AE7B33E002E4BAE /* StringExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensionTests.swift; sourceTree = ""; };
+ 04F3235B2BD2F99000F5927C /* UIApplication+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIApplication+Extensions.swift"; sourceTree = ""; };
+ 04F3235D2BD408C600F5927C /* AppetizeConfigTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppetizeConfigTests.swift; sourceTree = ""; };
+ 04F3235E2BD408C600F5927C /* Debug App Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Debug App Tests-Info.plist"; sourceTree = ""; };
+ 04F3235F2BD408C600F5927C /* MetadataParserTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MetadataParserTests.swift; sourceTree = ""; };
0DA32ABCF07A4EBED014327B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/LaunchScreen.strings; sourceTree = ""; };
0ED746F8924E70AD868BC0F4 /* MerchantNewLineItemViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantNewLineItemViewController.swift; sourceTree = ""; };
0FD08B8CE57A11D1E35A8684 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/LaunchScreen.strings; sourceTree = ""; };
13FA89917603E4BA5BB66AFC /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/LaunchScreen.strings; sourceTree = ""; };
1594BC5C96ECC3F46C811B2F /* Data+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Extensions.swift"; sourceTree = ""; };
- 17476BFBED51F389FCE82F16 /* MockAPIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAPIClient.swift; sourceTree = ""; };
- 1B8CB5A11A44AA9F3D7FE356 /* UserInterfaceModuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInterfaceModuleTests.swift; sourceTree = ""; };
1D05E65C196E6715D7D8B0C6 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Main.strings; sourceTree = ""; };
- 1F4E35F809D3FAF4354D5B05 /* URLSessionStackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionStackTests.swift; sourceTree = ""; };
- 1F79B50111AC4161CFB1EFE8 /* ApayaTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApayaTests.swift; sourceTree = ""; };
+ 1F278229D66AFE30C9C39085 /* Pods-Debug App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App.release.xcconfig"; path = "Target Support Files/Pods-Debug App/Pods-Debug App.release.xcconfig"; sourceTree = ""; };
229849A3DBE0858EE90673B9 /* CreateClientToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateClientToken.swift; sourceTree = ""; };
- 25FD540BEA16ABBDFE7DE182 /* PayPalService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPalService.swift; sourceTree = ""; };
- 28249328E3C719F45A8196C9 /* Pods-Debug App Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App Tests.release.xcconfig"; path = "Target Support Files/Pods-Debug App Tests/Pods-Debug App Tests.release.xcconfig"; sourceTree = ""; };
+ 27B211EA3949D1672A82B5F6 /* Pods-Debug App Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App Tests.debug.xcconfig"; path = "Target Support Files/Pods-Debug App Tests/Pods-Debug App Tests.debug.xcconfig"; sourceTree = ""; };
2A328E38DA586FFE0ED2894B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; };
2E64F057A39A91CA01CCB57F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Main.strings; sourceTree = ""; };
- 2E8F69253D85350BB7A1A761 /* TokenizationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenizationService.swift; sourceTree = ""; };
- 31CFA93A373A7DB78DA77283 /* ApplePayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplePayTests.swift; sourceTree = ""; };
33E18D5B5190C64631309D1B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LaunchScreen.strings; sourceTree = ""; };
- 38DD0A9535544D446514124A /* CreateResumePaymentService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateResumePaymentService.swift; sourceTree = ""; };
39CCCB917D1881082ED75975 /* ViewController+Primer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ViewController+Primer.swift"; sourceTree = ""; };
404E173A513B986A36F835F7 /* MerchantHeadlessCheckoutRawPhoneNumberDataViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutRawPhoneNumberDataViewController.swift; sourceTree = ""; };
483D2036DE3F89CA2C244C4F /* Debug App Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Debug App Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- 49DFB1ACD5014BF28ED283B3 /* PollingModuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollingModuleTests.swift; sourceTree = ""; };
- 4A5E3ACDA26D44F66B55766B /* HUC_TokenizationViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUC_TokenizationViewModelTests.swift; sourceTree = ""; };
4ACFB17A73AB7240BED98585 /* ExampleApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ExampleApp.entitlements; sourceTree = ""; };
4C353D84EABA4990DAB4DD28 /* MerchantHeadlessCheckoutRawRetailDataViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutRawRetailDataViewController.swift; sourceTree = ""; };
4E79C93EA805E87E1137A513 /* PaymentMethodCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentMethodCell.swift; sourceTree = ""; };
52F54EC3C1ACE19DF48BD6E2 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/LaunchScreen.strings; sourceTree = ""; };
- 5AA706A14BACFDB8E5715788 /* HeadlessVaultManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlessVaultManagerTests.swift; sourceTree = ""; };
- 5D7EC742DEB5BE12252E3E5B /* PayPalServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPalServiceTests.swift; sourceTree = ""; };
- 5DB3B88857B810440CDA881E /* DropInUI_TokenizationViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropInUI_TokenizationViewModelTests.swift; sourceTree = ""; };
- 5E8D7F3C53F8CCE4A03C975E /* VaultService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VaultService.swift; sourceTree = ""; };
- 5F8DC3341BDBB9AEDBE8D6DD /* DecodedClientToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecodedClientToken.swift; sourceTree = ""; };
6493EA8D95DDA066DE982B24 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Main.strings; sourceTree = ""; };
68E2722188A5A2948DB31144 /* Debug App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Debug App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 6C690FB7E6E8C942C87B1A1B /* PrimerAPIConfigurationModuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerAPIConfigurationModuleTests.swift; sourceTree = ""; };
6D2261DDEE5DC5D2ED518037 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
6D665EEA8106E51925C3CF2B /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Main.strings; sourceTree = ""; };
70D3D6CF0F006A06B7CEC71B /* TransactionResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionResponse.swift; sourceTree = ""; };
@@ -259,107 +130,49 @@
72845A3010F10A88F2EC7849 /* CheckoutTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckoutTheme.swift; sourceTree = ""; };
72E691B9A6A8EBB9F6A6B266 /* MerchantHeadlessCheckoutAvailablePaymentMethodsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutAvailablePaymentMethodsViewController.swift; sourceTree = ""; };
743E00065B4A8D6C95092A23 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/LaunchScreen.strings; sourceTree = ""; };
- 743F107C464526926A34A433 /* PaymentMethodConfigServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentMethodConfigServiceTests.swift; sourceTree = ""; };
7480FE5F665CC66C092BC95A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 752785ACCF65527C239391A8 /* PaymentMethodConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentMethodConfigTests.swift; sourceTree = ""; };
- 7A3E75CD834937EF85DE1C14 /* MockVaultCheckoutViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockVaultCheckoutViewModel.swift; sourceTree = ""; };
- 7A5E6F7A9C12C69CB66032E3 /* IPay88Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPay88Tests.swift; sourceTree = ""; };
- 7EA7D2BB0AC0A1877DB2E6CE /* MockModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockModule.swift; sourceTree = ""; };
- 82C5808E70210187BAEC47B1 /* Pods_Debug_App_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 872A0647D4136E27365FB7F8 /* StringTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringTests.swift; sourceTree = ""; };
+ 85AFC960D1A9EB56C4561471 /* Pods-Debug App Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App Tests.release.xcconfig"; path = "Target Support Files/Pods-Debug App Tests/Pods-Debug App Tests.release.xcconfig"; sourceTree = ""; };
876140D42B63F7DB0058CA8C /* MerchantHeadlessCheckoutKlarnaViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutKlarnaViewController.swift; sourceTree = ""; };
- 876140D72B66F8070058CA8C /* KlarnaTestsMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaTestsMocks.swift; sourceTree = ""; };
- 876140DD2B66F86A0058CA8C /* KlarnaComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaComponentTests.swift; sourceTree = ""; };
- 876140E12B66F89D0058CA8C /* KlarnaHeadlessManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaHeadlessManagerTests.swift; sourceTree = ""; };
876140E52B67F3B30058CA8C /* MerchantHeadlessCheckoutKlarnaViewController+Klarna.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MerchantHeadlessCheckoutKlarnaViewController+Klarna.swift"; sourceTree = ""; };
876140EE2B6BE8C20058CA8C /* MerchantHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHelpers.swift; sourceTree = ""; };
- 876140F32B70FBFE0058CA8C /* KlarnaTokenizationComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaTokenizationComponentTests.swift; sourceTree = ""; };
- 876140F52B716E060058CA8C /* KlarnaTokenizationManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KlarnaTokenizationManagerTests.swift; sourceTree = ""; };
876141072B8346650058CA8C /* MerchantHeadlessKlarnaInitializationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessKlarnaInitializationView.swift; sourceTree = ""; };
876141092B8355920058CA8C /* MerchantHeadlessKlarnaInitializationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessKlarnaInitializationViewModel.swift; sourceTree = ""; };
8761410B2B849A250058CA8C /* MerchantHeadlessKlarnaInitializationView+Elements.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MerchantHeadlessKlarnaInitializationView+Elements.swift"; sourceTree = ""; };
- 87DF3EC62BA871BD00162100 /* PrimerKlarnaCategoriesViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerKlarnaCategoriesViewControllerTests.swift; sourceTree = ""; };
- 8A23886804B13FA754E775D0 /* MockPaymentMethodTokenizationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPaymentMethodTokenizationViewModel.swift; sourceTree = ""; };
- 8A2886D1F7D43E091FD80419 /* Pods_Debug_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8A3FDC6FE0EB5AB5828D4D80 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/LaunchScreen.strings; sourceTree = ""; };
- 8C7C082270CF1C6B7810F9B3 /* RawDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RawDataManagerTests.swift; sourceTree = ""; };
9128566126AA7F571FFECA3A /* Range+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Range+Extensions.swift"; sourceTree = ""; };
92BE0A1A904DCEA405A11CC1 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Main.strings; sourceTree = ""; };
- 9314E0A4E884A8228611A030 /* IntExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntExtensionTests.swift; sourceTree = ""; };
93F15C1E46C70C3D73B50F31 /* UIStackViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIStackViewExtensions.swift; sourceTree = ""; };
942332BD921CBCAFBC77BD6D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = ""; };
- 952364FBFD6FA09653ECA37E /* TokenizationServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenizationServiceTests.swift; sourceTree = ""; };
- 97731417340A948FC8CD6ED8 /* Pods-Debug App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App.debug.xcconfig"; path = "Target Support Files/Pods-Debug App/Pods-Debug App.debug.xcconfig"; sourceTree = ""; };
98079137F3DE1FE6221DA7EC /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Main.strings; sourceTree = ""; };
9874F439DA3EA5854A454687 /* MerchantDropInUIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantDropInUIViewController.swift; sourceTree = ""; };
- 994AE6760B506D02499AEC90 /* InternalCardComponentManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InternalCardComponentManagerTests.swift; sourceTree = ""; };
- 9D122A0B71B707C2110AB7F5 /* PayPalConfirmBillingAgreementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayPalConfirmBillingAgreementTests.swift; sourceTree = ""; };
- A1055D6E2AF125E90027B967 /* DebouncerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebouncerTests.swift; sourceTree = ""; };
- A12AC2522B5046CF00C26999 /* CurrencyStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyStorageTests.swift; sourceTree = ""; };
- A12AC2542B505B6100C26999 /* CurrencyLoaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyLoaderTests.swift; sourceTree = ""; };
- A13392BB2AD459E90005A4D7 /* NolPayLinkCardComponentTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolPayLinkCardComponentTest.swift; sourceTree = ""; };
- A1536BAC2AEBEC3A0087DDC0 /* NolPayPhoneMetadataServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolPayPhoneMetadataServiceTests.swift; sourceTree = ""; };
- A1536BAE2AEC0A6D0087DDC0 /* NolTestsMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolTestsMocks.swift; sourceTree = ""; };
- A1585C742ACDAA700014F0B9 /* NolPayLinkedCardsComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolPayLinkedCardsComponentTests.swift; sourceTree = ""; };
A1604A656AF654D7422A2A5E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Main.strings; sourceTree = ""; };
- A19CB17A2BAA129900DB4326 /* CVVRecaptureViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CVVRecaptureViewModelTests.swift; sourceTree = ""; };
A19EF5622B20E22E00A72F60 /* .swiftlint.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; };
- A1A3D0F22AD5585A00F7D8C9 /* NolPayUnlinkCardComponentTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolPayUnlinkCardComponentTest.swift; sourceTree = ""; };
- A1A3D0F42AD56BE300F7D8C9 /* NolPayPaymentComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NolPayPaymentComponentTests.swift; sourceTree = ""; };
A6AEF11B151368BF993C3EA9 /* TestScenario.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestScenario.swift; sourceTree = ""; };
- AD381E7E16D01D8D743232F7 /* ThemeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeTests.swift; sourceTree = ""; };
- B08BF9387885E3CCB33008A2 /* Pods-Debug App Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App Tests.debug.xcconfig"; path = "Target Support Files/Pods-Debug App Tests/Pods-Debug App Tests.debug.xcconfig"; sourceTree = ""; };
B18D7E7738BF86467B0F1465 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
B1FD8065D40A2D691F643F3B /* UIViewController+API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+API.swift"; sourceTree = ""; };
- B266F9E1651BD20E45DCCF68 /* PrimerRawRetailerDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerRawRetailerDataTests.swift; sourceTree = ""; };
B866FF13033A5CB8B4C3388E /* MerchantHeadlessCheckoutRawDataViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutRawDataViewController.swift; sourceTree = ""; };
- B9813BD518AC7C3F442B5075 /* PrimerCheckoutTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerCheckoutTheme.swift; sourceTree = ""; };
- BA0B2BEE5C389FD13E210847 /* DateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateTests.swift; sourceTree = ""; };
- BD26E8C6074BB89ACBD5B8B9 /* MaskTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaskTests.swift; sourceTree = ""; };
- BF8639891B79E2FCCE10A510 /* ThreeDSErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeDSErrorTests.swift; sourceTree = ""; };
+ BB7C19D2A72C70B70AA4DF8C /* Pods-Debug App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App.debug.xcconfig"; path = "Target Support Files/Pods-Debug App/Pods-Debug App.debug.xcconfig"; sourceTree = ""; };
C18C9664115CFDEB59FED19A /* MerchantSessionAndSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantSessionAndSettingsViewController.swift; sourceTree = ""; };
C4DFE77F28AB538220A0F6EE /* ka */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ka; path = ka.lproj/Main.strings; sourceTree = ""; };
- C7D8E1E91CA11EC6831ADEE4 /* EncodingDecodingContainerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncodingDecodingContainerTests.swift; sourceTree = ""; };
C7EB86C62BA46BF51C64ABC2 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/LaunchScreen.strings; sourceTree = ""; };
- CA30891B2D5F9B6B97E56B99 /* WebViewUtilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewUtilTests.swift; sourceTree = ""; };
- D038BDB23C062D362AAA09BE /* Networking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Networking.swift; sourceTree = ""; };
- D0A003705AFF7F922BCFE75F /* TokenizationResponseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenizationResponseTests.swift; sourceTree = ""; };
- D3D9154BF1E011FED6799CD5 /* CardData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardData.swift; sourceTree = ""; };
D4139D8F153BB399DA67F2EE /* ViewController+PrimerUIHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ViewController+PrimerUIHelpers.swift"; sourceTree = ""; };
D5C1B1F65A9382606A25CE77 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Main.strings; sourceTree = ""; };
DAC5687FF32E8661F1A00CE5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
DBC8EA85D1CBC1EC4AB3EB8C /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/LaunchScreen.strings; sourceTree = ""; };
- DEC0E14FABFAE4D0EFC3A585 /* Pods-Debug App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Debug App.release.xcconfig"; path = "Target Support Files/Pods-Debug App/Pods-Debug App.release.xcconfig"; sourceTree = ""; };
DECCDC4079DC6471CEDDEA84 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/LaunchScreen.strings; sourceTree = ""; };
- E108F58D2B0D4F0800EC3CC6 /* WebRedirectComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebRedirectComponentTests.swift; sourceTree = ""; };
- E11F473C2B0694C50091C31F /* PrimerHeadlessFormWithRedirectManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerHeadlessFormWithRedirectManagerTests.swift; sourceTree = ""; };
- E11F47422B06C4E30091C31F /* MerchantHeadlessCheckoutBankViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutBankViewController.swift; sourceTree = ""; };
- E11F47432B06C4E30091C31F /* BanksListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BanksListView.swift; sourceTree = ""; };
- E11F47442B06C4E30091C31F /* BanksListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BanksListModel.swift; sourceTree = ""; };
- E11F47452B06C4E30091C31F /* ImageViewWithUrl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageViewWithUrl.swift; sourceTree = ""; };
- E11F47462B06C4E30091C31F /* MerchantNewLineItemViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantNewLineItemViewController.swift; sourceTree = ""; };
- E11F47472B06C4E30091C31F /* MerchantHeadlessCheckoutNolPayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutNolPayViewController.swift; sourceTree = ""; };
+ E07ED300DA4DBEB8D2BF520D /* Pods_Debug_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E11F47502B06C5030091C31F /* BanksListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BanksListView.swift; sourceTree = ""; };
E11F47512B06C5030091C31F /* BanksListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BanksListModel.swift; sourceTree = ""; };
E11F47522B06C5030091C31F /* ImageViewWithUrl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageViewWithUrl.swift; sourceTree = ""; };
E129D66F2B162022004694F9 /* MerchantHeadlessCheckoutBankViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantHeadlessCheckoutBankViewController.swift; sourceTree = ""; };
- E130C3D82AFD19FF00AC3E7C /* NetworkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkTests.swift; sourceTree = ""; };
- E13E72442AFE653000911866 /* IdealPaymentMethodTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdealPaymentMethodTests.swift; sourceTree = ""; };
- E1A297252B036AB1005ADA51 /* BankComponentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BankComponentTests.swift; sourceTree = ""; };
E1AB44D12AFE13AF00639DC5 /* URL+NetworkHeaders.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL+NetworkHeaders.swift"; sourceTree = ""; };
E1C3EF0BA039C0A50EDE13A5 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Main.strings; sourceTree = ""; };
- E1E502B02AFE9ECF00CD7F0A /* XCTestCase+Tokenization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+Tokenization.swift"; sourceTree = ""; };
- E63F5C5C1FD2F3E6CB02EC5A /* HeadlessUniversalCheckoutTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlessUniversalCheckoutTests.swift; sourceTree = ""; };
E7640DB186F9638C2F556F77 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Main.strings; sourceTree = ""; };
E8DE1E4FB055B60582977315 /* Networking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Networking.swift; sourceTree = ""; };
- E9899972360BCA5992CEE5BC /* PrimerBancontactCardDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerBancontactCardDataManagerTests.swift; sourceTree = ""; };
- EEB1E1B37192BF739461AFF1 /* PrimerRawCardDataManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerRawCardDataManagerTests.swift; sourceTree = ""; };
F08F63D72B9B5A7C006EF9A9 /* SessionConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionConfiguration.swift; sourceTree = ""; };
F08F63D92B9B5BC5006EF9A9 /* AppetizeConfigProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppetizeConfigProvider.swift; sourceTree = ""; };
F08F63DB2B9F27B0006EF9A9 /* MetadataParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetadataParser.swift; sourceTree = ""; };
- F08F63DD2B9F27F4006EF9A9 /* MetadataParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetadataParserTests.swift; sourceTree = ""; };
- F08F63E52BA0BF0C006EF9A9 /* AppetizeConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppetizeConfigTests.swift; sourceTree = ""; };
- F4AC1EC0F98CB56DA4D075CA /* Mocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mocks.swift; sourceTree = ""; };
+ F0FD41735810826EB829619C /* Pods_Debug_App_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Debug_App_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F816A2444633C4336A7CB071 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = ""; };
F9023841AFCE8E3205CB713A /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; };
FB1F71737862EF5D0F4FE5AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
@@ -373,7 +186,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 05290163DCB52E50E29AF612 /* Pods_Debug_App_Tests.framework in Frameworks */,
+ BAEBC22D052C55BD8EC53C6B /* Pods_Debug_App_Tests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -381,77 +194,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- F4141A68EA2AFAD82959B4CC /* Pods_Debug_App.framework in Frameworks */,
+ B15DB155FF963676B88B96BF /* Pods_Debug_App.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 042ED1632AF0F5CE0027833F /* Delegates */ = {
- isa = PBXGroup;
- children = (
- 042ED1642AF0F5FD0027833F /* MockRawDataManagerDelegate.swift */,
- );
- path = Delegates;
- sourceTree = "";
- };
- 0442B6422B7BA468004DB054 /* Analytics */ = {
- isa = PBXGroup;
- children = (
- 0442B6432B7BA477004DB054 /* MockAnalyticsStorage.swift */,
- 0442B6452B7BA498004DB054 /* MockPrimerAPIAnalyticsClient.swift */,
- );
- path = Analytics;
- sourceTree = "";
- };
- 0479FB162AF2598800D0AFC9 /* Test Utilities */ = {
- isa = PBXGroup;
- children = (
- 0479FB172AF2599200D0AFC9 /* StringTyper.swift */,
- 04DAAED52B03EF0B002E2614 /* SDKSessionHelper.swift */,
- 04236A9A2B7D2EA50041EC11 /* JWTFactory.swift */,
- 0488648C2BA89402007BCDA6 /* CodingUtilities.swift */,
- );
- path = "Test Utilities";
- sourceTree = "";
- };
- 047EE1FE2BB47A97006C775C /* Legacy */ = {
- isa = PBXGroup;
- children = (
- E130C3D82AFD19FF00AC3E7C /* NetworkTests.swift */,
- 1F4E35F809D3FAF4354D5B05 /* URLSessionStackTests.swift */,
- );
- path = Legacy;
- sourceTree = "";
- };
- 047EE1FF2BB47AA5006C775C /* Endpoints */ = {
- isa = PBXGroup;
- children = (
- 041F52082ADE92A300A1D702 /* ListCardNetworksEndpointTests.swift */,
- );
- path = Endpoints;
- sourceTree = "";
- };
- 047EE2002BB47B04006C775C /* Services */ = {
- isa = PBXGroup;
- children = (
- 047EE2012BB47B1B006C775C /* NetworkingReportingServiceTests.swift */,
- 044348DD2BB5B3D80072D97C /* DefaultNetworkServiceTests.swift */,
- 04A153CE2BC40CE10018D805 /* RequestDispatcherTests.swift */,
- );
- path = Services;
- sourceTree = "";
- };
- 048864892BA88F44007BCDA6 /* Factories */ = {
- isa = PBXGroup;
- children = (
- 0488648A2BA88F63007BCDA6 /* NetworkRequestFactoryTests.swift */,
- 0488648E2BA89E04007BCDA6 /* NetworkResponseFactoryTests.swift */,
- );
- path = Factories;
- sourceTree = "";
- };
0489E2B92B68F70400FA0682 /* Utilities */ = {
isa = PBXGroup;
children = (
@@ -462,12 +211,23 @@
path = Utilities;
sourceTree = "";
};
- 04DAAED22B03EEBE002E2614 /* Assets */ = {
+ 04F323602BD408C600F5927C /* Tests */ = {
isa = PBXGroup;
children = (
- 04DAAED32B03EED1002E2614 /* AssetsManagerTests.swift */,
+ 04F3235E2BD408C600F5927C /* Debug App Tests-Info.plist */,
+ 04F3235D2BD408C600F5927C /* AppetizeConfigTests.swift */,
+ 04F3235F2BD408C600F5927C /* MetadataParserTests.swift */,
);
- path = Assets;
+ path = Tests;
+ sourceTree = "";
+ };
+ 093C53944BD75C6EB0F2C8C0 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ E07ED300DA4DBEB8D2BF520D /* Pods_Debug_App.framework */,
+ F0FD41735810826EB829619C /* Pods_Debug_App_Tests.framework */,
+ );
+ name = Frameworks;
sourceTree = "";
};
094077DEFDC2739B10CF4183 /* Resources */ = {
@@ -503,7 +263,7 @@
FBDF3F8B5F93A0EC28048640 /* Project */,
DF30711EB149C64C364BB79A /* Products */,
61E8D69DF93462D748F446DF /* Pods */,
- EF8855DEDF971BA3B94636A0 /* Frameworks */,
+ 093C53944BD75C6EB0F2C8C0 /* Frameworks */,
);
sourceTree = "";
};
@@ -516,17 +276,6 @@
path = "Localized Views";
sourceTree = "";
};
- 2F23D3C9CC9CBC1B95329B1C /* Network */ = {
- isa = PBXGroup;
- children = (
- 047EE1FF2BB47AA5006C775C /* Endpoints */,
- 047EE1FE2BB47A97006C775C /* Legacy */,
- 048864892BA88F44007BCDA6 /* Factories */,
- 047EE2002BB47B04006C775C /* Services */,
- );
- path = Network;
- sourceTree = "";
- };
553A7EDE72B8249F55A0E6B9 /* Extension */ = {
isa = PBXGroup;
children = (
@@ -537,37 +286,11 @@
B1FD8065D40A2D691F643F3B /* UIViewController+API.swift */,
39CCCB917D1881082ED75975 /* ViewController+Primer.swift */,
D4139D8F153BB399DA67F2EE /* ViewController+PrimerUIHelpers.swift */,
+ 04F3235B2BD2F99000F5927C /* UIApplication+Extensions.swift */,
);
path = Extension;
sourceTree = "";
};
- 5836043C1C4E5A1CF7B81CDD /* Services */ = {
- isa = PBXGroup;
- children = (
- 994AE6760B506D02499AEC90 /* InternalCardComponentManagerTests.swift */,
- 743F107C464526926A34A433 /* PaymentMethodConfigServiceTests.swift */,
- 5D7EC742DEB5BE12252E3E5B /* PayPalServiceTests.swift */,
- 952364FBFD6FA09653ECA37E /* TokenizationServiceTests.swift */,
- 042ED15C2AF010500027833F /* CardValidationServiceTests.swift */,
- );
- path = Services;
- sourceTree = "";
- };
- 5CC7BF9D8A0A9D8490C48151 /* Primer */ = {
- isa = PBXGroup;
- children = (
- 876140D62B66F75D0058CA8C /* Klarna */,
- E13E72432AFE64E800911866 /* Ideal */,
- A15985C22ACDA82F00A64C3C /* NolPay */,
- E9899972360BCA5992CEE5BC /* PrimerBancontactCardDataManagerTests.swift */,
- EEB1E1B37192BF739461AFF1 /* PrimerRawCardDataManagerTests.swift */,
- B266F9E1651BD20E45DCCF68 /* PrimerRawRetailerDataTests.swift */,
- 049A055F2B4C191D002CEEBA /* NativeUIManagerTests.swift */,
- A19CB17A2BAA129900DB4326 /* CVVRecaptureViewModelTests.swift */,
- );
- path = Primer;
- sourceTree = "";
- };
5E99BB590FD6521F2D5403BB /* Sources */ = {
isa = PBXGroup;
children = (
@@ -582,39 +305,17 @@
path = Sources;
sourceTree = "";
};
- 61C1263B3C114C5B0A1E5AB4 /* Services */ = {
- isa = PBXGroup;
- children = (
- 38DD0A9535544D446514124A /* CreateResumePaymentService.swift */,
- 25FD540BEA16ABBDFE7DE182 /* PayPalService.swift */,
- 2E8F69253D85350BB7A1A761 /* TokenizationService.swift */,
- 5E8D7F3C53F8CCE4A03C975E /* VaultService.swift */,
- 047D8E882ADEA4C700A5E7BD /* NetworkService.swift */,
- 042ED1612AF0F5600027833F /* MockBINDataAPIClient.swift */,
- );
- path = Services;
- sourceTree = "";
- };
61E8D69DF93462D748F446DF /* Pods */ = {
isa = PBXGroup;
children = (
- 97731417340A948FC8CD6ED8 /* Pods-Debug App.debug.xcconfig */,
- DEC0E14FABFAE4D0EFC3A585 /* Pods-Debug App.release.xcconfig */,
- B08BF9387885E3CCB33008A2 /* Pods-Debug App Tests.debug.xcconfig */,
- 28249328E3C719F45A8196C9 /* Pods-Debug App Tests.release.xcconfig */,
+ BB7C19D2A72C70B70AA4DF8C /* Pods-Debug App.debug.xcconfig */,
+ 1F278229D66AFE30C9C39085 /* Pods-Debug App.release.xcconfig */,
+ 27B211EA3949D1672A82B5F6 /* Pods-Debug App Tests.debug.xcconfig */,
+ 85AFC960D1A9EB56C4561471 /* Pods-Debug App Tests.release.xcconfig */,
);
path = Pods;
sourceTree = "";
};
- 626776D8EFEF24D5C5A36307 /* Extensions */ = {
- isa = PBXGroup;
- children = (
- C7D8E1E91CA11EC6831ADEE4 /* EncodingDecodingContainerTests.swift */,
- 04FAF9EB2AE7B33E002E4BAE /* StringExtensionTests.swift */,
- );
- path = Extensions;
- sourceTree = "";
- };
64FB843527A1671D550B536F /* Network */ = {
isa = PBXGroup;
children = (
@@ -636,19 +337,6 @@
path = KlarnaHeadless;
sourceTree = "";
};
- 876140D62B66F75D0058CA8C /* Klarna */ = {
- isa = PBXGroup;
- children = (
- 876140D72B66F8070058CA8C /* KlarnaTestsMocks.swift */,
- 876140DD2B66F86A0058CA8C /* KlarnaComponentTests.swift */,
- 876140E12B66F89D0058CA8C /* KlarnaHeadlessManagerTests.swift */,
- 876140F32B70FBFE0058CA8C /* KlarnaTokenizationComponentTests.swift */,
- 876140F52B716E060058CA8C /* KlarnaTokenizationManagerTests.swift */,
- 87DF3EC62BA871BD00162100 /* PrimerKlarnaCategoriesViewControllerTests.swift */,
- );
- path = Klarna;
- sourceTree = "";
- };
876140ED2B6BE8860058CA8C /* Merchant Helpers */ = {
isa = PBXGroup;
children = (
@@ -657,113 +345,6 @@
path = "Merchant Helpers";
sourceTree = "";
};
- 9EE81958BB2BB34183F6C0AB /* Modules */ = {
- isa = PBXGroup;
- children = (
- 5DB3B88857B810440CDA881E /* DropInUI_TokenizationViewModelTests.swift */,
- 4A5E3ACDA26D44F66B55766B /* HUC_TokenizationViewModelTests.swift */,
- 49DFB1ACD5014BF28ED283B3 /* PollingModuleTests.swift */,
- 6C690FB7E6E8C942C87B1A1B /* PrimerAPIConfigurationModuleTests.swift */,
- 1B8CB5A11A44AA9F3D7FE356 /* UserInterfaceModuleTests.swift */,
- E1E502B02AFE9ECF00CD7F0A /* XCTestCase+Tokenization.swift */,
- );
- path = Modules;
- sourceTree = "";
- };
- A15985C22ACDA82F00A64C3C /* NolPay */ = {
- isa = PBXGroup;
- children = (
- 041295AB2AB9E2A900A4F243 /* PrimerHeadlessNolPayManagerTests.swift */,
- A1536BAC2AEBEC3A0087DDC0 /* NolPayPhoneMetadataServiceTests.swift */,
- A1585C742ACDAA700014F0B9 /* NolPayLinkedCardsComponentTests.swift */,
- A13392BB2AD459E90005A4D7 /* NolPayLinkCardComponentTest.swift */,
- A1A3D0F22AD5585A00F7D8C9 /* NolPayUnlinkCardComponentTest.swift */,
- A1A3D0F42AD56BE300F7D8C9 /* NolPayPaymentComponentTests.swift */,
- A1536BAE2AEC0A6D0087DDC0 /* NolTestsMocks.swift */,
- );
- path = NolPay;
- sourceTree = "";
- };
- A95565BDB7031F41ECD023D7 /* Helpers */ = {
- isa = PBXGroup;
- children = (
- D3D9154BF1E011FED6799CD5 /* CardData.swift */,
- D038BDB23C062D362AAA09BE /* Networking.swift */,
- 04769C142B1A680C0051581C /* Promises+Helper.swift */,
- A12AC2542B505B6100C26999 /* CurrencyLoaderTests.swift */,
- );
- path = Helpers;
- sourceTree = "";
- };
- ACC4CBBD9744630CB46A5EE4 /* v2 */ = {
- isa = PBXGroup;
- children = (
- E63F5C5C1FD2F3E6CB02EC5A /* HeadlessUniversalCheckoutTests.swift */,
- 5AA706A14BACFDB8E5715788 /* HeadlessVaultManagerTests.swift */,
- 17476BFBED51F389FCE82F16 /* MockAPIClient.swift */,
- 7EA7D2BB0AC0A1877DB2E6CE /* MockModule.swift */,
- 8C7C082270CF1C6B7810F9B3 /* RawDataManagerTests.swift */,
- );
- path = v2;
- sourceTree = "";
- };
- C8A971C6C0021F0115DF44CC /* Utils */ = {
- isa = PBXGroup;
- children = (
- 0402B7B72AFBBC2200B02C75 /* ApplePayUtilsTest.swift */,
- BA0B2BEE5C389FD13E210847 /* DateTests.swift */,
- A1055D6E2AF125E90027B967 /* DebouncerTests.swift */,
- 9314E0A4E884A8228611A030 /* IntExtensionTests.swift */,
- BD26E8C6074BB89ACBD5B8B9 /* MaskTests.swift */,
- 872A0647D4136E27365FB7F8 /* StringTests.swift */,
- CA30891B2D5F9B6B97E56B99 /* WebViewUtilTests.swift */,
- F08F63DD2B9F27F4006EF9A9 /* MetadataParserTests.swift */,
- F08F63E52BA0BF0C006EF9A9 /* AppetizeConfigTests.swift */,
- );
- path = Utils;
- sourceTree = "";
- };
- D83EED4C1249B62B908781B0 /* Data Models */ = {
- isa = PBXGroup;
- children = (
- 1F79B50111AC4161CFB1EFE8 /* ApayaTests.swift */,
- 31CFA93A373A7DB78DA77283 /* ApplePayTests.swift */,
- 0402B7B52AFBBA7200B02C75 /* CardNetworkTests.swift */,
- 5F8DC3341BDBB9AEDBE8D6DD /* DecodedClientToken.swift */,
- A12AC2522B5046CF00C26999 /* CurrencyStorageTests.swift */,
- 7A5E6F7A9C12C69CB66032E3 /* IPay88Tests.swift */,
- 752785ACCF65527C239391A8 /* PaymentMethodConfigTests.swift */,
- 9D122A0B71B707C2110AB7F5 /* PayPalConfirmBillingAgreementTests.swift */,
- B9813BD518AC7C3F442B5075 /* PrimerCheckoutTheme.swift */,
- AD381E7E16D01D8D743232F7 /* ThemeTests.swift */,
- BF8639891B79E2FCCE10A510 /* ThreeDSErrorTests.swift */,
- 021A00DEB01A46C876592575 /* ThreeDSProtocolVersionTests.swift */,
- D0A003705AFF7F922BCFE75F /* TokenizationResponseTests.swift */,
- );
- path = "Data Models";
- sourceTree = "";
- };
- D99811C39E1808A948623732 /* Unit Tests */ = {
- isa = PBXGroup;
- children = (
- 04DAAED22B03EEBE002E2614 /* Assets */,
- E1A2F78003351E14426E0B36 /* Analytics */,
- D83EED4C1249B62B908781B0 /* Data Models */,
- 626776D8EFEF24D5C5A36307 /* Extensions */,
- A95565BDB7031F41ECD023D7 /* Helpers */,
- E4C8DBB82E4149A7C4D26467 /* Mocks */,
- 9EE81958BB2BB34183F6C0AB /* Modules */,
- 2F23D3C9CC9CBC1B95329B1C /* Network */,
- 5CC7BF9D8A0A9D8490C48151 /* Primer */,
- 5836043C1C4E5A1CF7B81CDD /* Services */,
- 0479FB162AF2598800D0AFC9 /* Test Utilities */,
- C8A971C6C0021F0115DF44CC /* Utils */,
- ACC4CBBD9744630CB46A5EE4 /* v2 */,
- F4AC1EC0F98CB56DA4D075CA /* Mocks.swift */,
- );
- path = "Unit Tests";
- sourceTree = "";
- };
D9AC6F54A87D432982864A63 /* Model */ = {
isa = PBXGroup;
children = (
@@ -776,23 +357,6 @@
path = Model;
sourceTree = "";
};
- D9FD37D45BD73B08D04AC94C /* Tests */ = {
- isa = PBXGroup;
- children = (
- 04DFAADB2AAA01E60030FECE /* Debug App Tests-Info.plist */,
- D99811C39E1808A948623732 /* Unit Tests */,
- );
- path = Tests;
- sourceTree = "";
- };
- DAAB90DB09F0793B3580DE69 /* ViewModels */ = {
- isa = PBXGroup;
- children = (
- 7A3E75CD834937EF85DE1C14 /* MockVaultCheckoutViewModel.swift */,
- );
- path = ViewModels;
- sourceTree = "";
- };
DF30711EB149C64C364BB79A /* Products */ = {
isa = PBXGroup;
children = (
@@ -802,28 +366,6 @@
name = Products;
sourceTree = "";
};
- E11F47402B06C4E30091C31F /* New UI */ = {
- isa = PBXGroup;
- children = (
- E11F47412B06C4E30091C31F /* FormWithRedirect */,
- E11F47462B06C4E30091C31F /* MerchantNewLineItemViewController.swift */,
- E11F47472B06C4E30091C31F /* MerchantHeadlessCheckoutNolPayViewController.swift */,
- );
- name = "New UI";
- path = "Sources/View Controllers/New UI";
- sourceTree = SOURCE_ROOT;
- };
- E11F47412B06C4E30091C31F /* FormWithRedirect */ = {
- isa = PBXGroup;
- children = (
- E11F47422B06C4E30091C31F /* MerchantHeadlessCheckoutBankViewController.swift */,
- E11F47432B06C4E30091C31F /* BanksListView.swift */,
- E11F47442B06C4E30091C31F /* BanksListModel.swift */,
- E11F47452B06C4E30091C31F /* ImageViewWithUrl.swift */,
- );
- path = FormWithRedirect;
- sourceTree = "";
- };
E11F474E2B06C5030091C31F /* FormWithRedirect */ = {
isa = PBXGroup;
children = (
@@ -835,40 +377,6 @@
path = FormWithRedirect;
sourceTree = "";
};
- E13E72432AFE64E800911866 /* Ideal */ = {
- isa = PBXGroup;
- children = (
- E11F47402B06C4E30091C31F /* New UI */,
- E13E72442AFE653000911866 /* IdealPaymentMethodTests.swift */,
- E1A297252B036AB1005ADA51 /* BankComponentTests.swift */,
- E108F58D2B0D4F0800EC3CC6 /* WebRedirectComponentTests.swift */,
- E11F473C2B0694C50091C31F /* PrimerHeadlessFormWithRedirectManagerTests.swift */,
- );
- path = Ideal;
- sourceTree = "";
- };
- E1A2F78003351E14426E0B36 /* Analytics */ = {
- isa = PBXGroup;
- children = (
- 04F6EF732AE6A06200115D05 /* AnalyticsEventsTests.swift */,
- 049298002B1DD466002E04B8 /* AnalyticsServiceTests.swift */,
- 049298062B1E1F4D002E04B8 /* AnalyticsStorageTests.swift */,
- );
- path = Analytics;
- sourceTree = "";
- };
- E4C8DBB82E4149A7C4D26467 /* Mocks */ = {
- isa = PBXGroup;
- children = (
- 0442B6422B7BA468004DB054 /* Analytics */,
- 042ED1632AF0F5CE0027833F /* Delegates */,
- 61C1263B3C114C5B0A1E5AB4 /* Services */,
- DAAB90DB09F0793B3580DE69 /* ViewModels */,
- 8A23886804B13FA754E775D0 /* MockPaymentMethodTokenizationViewModel.swift */,
- );
- path = Mocks;
- sourceTree = "";
- };
EF5FBE3673FBCB40F55F4DC0 /* New UI */ = {
isa = PBXGroup;
children = (
@@ -880,15 +388,6 @@
path = "New UI";
sourceTree = "";
};
- EF8855DEDF971BA3B94636A0 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 8A2886D1F7D43E091FD80419 /* Pods_Debug_App.framework */,
- 82C5808E70210187BAEC47B1 /* Pods_Debug_App_Tests.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
F214F09DF97D2A83FC7D0BE0 /* View */ = {
isa = PBXGroup;
children = (
@@ -900,9 +399,9 @@
FBDF3F8B5F93A0EC28048640 /* Project */ = {
isa = PBXGroup;
children = (
+ 04F323602BD408C600F5927C /* Tests */,
094077DEFDC2739B10CF4183 /* Resources */,
5E99BB590FD6521F2D5403BB /* Sources */,
- D9FD37D45BD73B08D04AC94C /* Tests */,
4ACFB17A73AB7240BED98585 /* ExampleApp.entitlements */,
FB1F71737862EF5D0F4FE5AB /* Info.plist */,
);
@@ -916,7 +415,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 4700FFD06E10F0EE123A7B8B /* Build configuration list for PBXNativeTarget "Debug App Tests" */;
buildPhases = (
- 38CE3210461AF2DB7193B25B /* [CP] Check Pods Manifest.lock */,
+ 1130539E7FE8944445055CB5 /* [CP] Check Pods Manifest.lock */,
1E0FCAD905F5F8F13B6A164B /* Sources */,
9CED4C4EFACB340F3C55B1F0 /* Resources */,
D11E367C3560C383BC4CA0A7 /* Embed Frameworks */,
@@ -936,13 +435,13 @@
isa = PBXNativeTarget;
buildConfigurationList = CA98A6B11506835A81F6391A /* Build configuration list for PBXNativeTarget "Debug App" */;
buildPhases = (
- 0C48779C396DBF62C6CAB8C0 /* [CP] Check Pods Manifest.lock */,
+ F95E0F04FEDC53EFF22A8FAD /* [CP] Check Pods Manifest.lock */,
66BB6A7BADD3A9CDD6412CE2 /* Sources */,
10FBAAC827CE0E3983CD7597 /* Resources */,
73B416AD9A0CB3B0EA16AF79 /* Embed Frameworks */,
CB612F7DF16CD3190025327F /* Frameworks */,
A18BD8BD2AFE4B0900923C87 /* SwiftLint */,
- A6EE74438C5753653409B474 /* [CP] Embed Pods Frameworks */,
+ B23FED1E6EB620606C7965BB /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -1006,7 +505,6 @@
buildActionMask = 2147483647;
files = (
A19EF5632B20E22E00A72F60 /* .swiftlint.yml in Resources */,
- 04DFAADC2AAA01E60030FECE /* Debug App Tests-Info.plist in Resources */,
EA7FAA4F8476BD3711D628CB /* Images.xcassets in Resources */,
F0C2147F6FA26527BE55549A /* LaunchScreen.xib in Resources */,
949864026D1CDE6F5C62C66E /* Main.storyboard in Resources */,
@@ -1017,13 +515,14 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 04F323622BD408C600F5927C /* Debug App Tests-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 0C48779C396DBF62C6CAB8C0 /* [CP] Check Pods Manifest.lock */ = {
+ 1130539E7FE8944445055CB5 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -1038,69 +537,69 @@
outputFileListPaths = (
);
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Debug App-checkManifestLockResult.txt",
+ "$(DERIVED_FILE_DIR)/Pods-Debug App Tests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 38CE3210461AF2DB7193B25B /* [CP] Check Pods Manifest.lock */ = {
+ A18BD8BD2AFE4B0900923C87 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
);
- name = "[CP] Check Pods Manifest.lock";
+ name = SwiftLint;
outputFileListPaths = (
);
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Debug App Tests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
+ shellScript = "if [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif which swiftlint > /dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
};
- A18BD8BD2AFE4B0900923C87 /* SwiftLint */ = {
+ B23FED1E6EB620606C7965BB /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- );
- name = SwiftLint;
+ name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- );
- outputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif which swiftlint > /dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
};
- A6EE74438C5753653409B474 /* [CP] Embed Pods Frameworks */ = {
+ F95E0F04FEDC53EFF22A8FAD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- name = "[CP] Embed Pods Frameworks";
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Debug App-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Debug App/Pods-Debug App-frameworks.sh\"\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -1110,100 +609,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 876140DE2B66F86A0058CA8C /* KlarnaComponentTests.swift in Sources */,
- 70EAA3B33425CC9D16239BB0 /* ApplePayTests.swift in Sources */,
- A13392BC2AD459E90005A4D7 /* NolPayLinkCardComponentTest.swift in Sources */,
- 3FD160A4D951EA772ADF4E25 /* DecodedClientToken.swift in Sources */,
- 876140E22B66F89D0058CA8C /* KlarnaHeadlessManagerTests.swift in Sources */,
- 876140D82B66F8070058CA8C /* KlarnaTestsMocks.swift in Sources */,
- E1E502B12AFE9ECF00CD7F0A /* XCTestCase+Tokenization.swift in Sources */,
- 3D112A8DE292D097E651FCDB /* IPay88Tests.swift in Sources */,
- 04DAAED42B03EED1002E2614 /* AssetsManagerTests.swift in Sources */,
- F08F63E62BA0BF0C006EF9A9 /* AppetizeConfigTests.swift in Sources */,
- A1536BAF2AEC0A6D0087DDC0 /* NolTestsMocks.swift in Sources */,
- A61B9E61EDCE18D34438352E /* PayPalConfirmBillingAgreementTests.swift in Sources */,
- 047EE2022BB47B1B006C775C /* NetworkingReportingServiceTests.swift in Sources */,
- E13E72452AFE653000911866 /* IdealPaymentMethodTests.swift in Sources */,
- 0442B6472B7BA4C7004DB054 /* MockPrimerAPIAnalyticsClient.swift in Sources */,
- 8064B65A8F83D5B004D081FD /* PaymentMethodConfigTests.swift in Sources */,
- 04DAAED62B03EF0B002E2614 /* SDKSessionHelper.swift in Sources */,
- 0488648D2BA89402007BCDA6 /* CodingUtilities.swift in Sources */,
- 4BD7794627267B40E9E10686 /* PrimerCheckoutTheme.swift in Sources */,
- A12AC2552B505B6200C26999 /* CurrencyLoaderTests.swift in Sources */,
- F99DAF50E86E6F8CCD127E5B /* ThemeTests.swift in Sources */,
- A12AC2532B5046CF00C26999 /* CurrencyStorageTests.swift in Sources */,
- 0488648F2BA89E04007BCDA6 /* NetworkResponseFactoryTests.swift in Sources */,
- 04769C152B1A680C0051581C /* Promises+Helper.swift in Sources */,
- 049298072B1E1F4D002E04B8 /* AnalyticsStorageTests.swift in Sources */,
- 24C060A48D4A2670FFC3426F /* ThreeDSErrorTests.swift in Sources */,
- F1A71C2E0D900FEB9AF1351C /* ThreeDSProtocolVersionTests.swift in Sources */,
- E108F58E2B0D4F0800EC3CC6 /* WebRedirectComponentTests.swift in Sources */,
- 04FAF9EC2AE7B33E002E4BAE /* StringExtensionTests.swift in Sources */,
- C29B625B5698094691227852 /* TokenizationResponseTests.swift in Sources */,
- 047D8E892ADEA4C700A5E7BD /* NetworkService.swift in Sources */,
- 041F52092ADE92A300A1D702 /* ListCardNetworksEndpointTests.swift in Sources */,
- 0402B7B62AFBBA7200B02C75 /* CardNetworkTests.swift in Sources */,
- A1585C752ACDAA700014F0B9 /* NolPayLinkedCardsComponentTests.swift in Sources */,
- 088961D00784BD296EA9745C /* EncodingDecodingContainerTests.swift in Sources */,
- 800B92A57CAAC6471D01A89D /* CardData.swift in Sources */,
- A1A3D0F32AD5585A00F7D8C9 /* NolPayUnlinkCardComponentTest.swift in Sources */,
- 3BB02CA24B6B3EF458326B7D /* Networking.swift in Sources */,
- 04A153CF2BC40CE10018D805 /* RequestDispatcherTests.swift in Sources */,
- 25FA73D4BBA89962663B5378 /* Mocks.swift in Sources */,
- 2E0D85B7343377F1319902AD /* MockPaymentMethodTokenizationViewModel.swift in Sources */,
- A19CB17B2BAA129900DB4326 /* CVVRecaptureViewModelTests.swift in Sources */,
- E11F473D2B0694C50091C31F /* PrimerHeadlessFormWithRedirectManagerTests.swift in Sources */,
- 161D4BE3FFD5E4A60F4461F0 /* CreateResumePaymentService.swift in Sources */,
- C6D7F7ECFD35B3DC3AFD6CB2 /* PayPalService.swift in Sources */,
- 042ED1622AF0F5600027833F /* MockBINDataAPIClient.swift in Sources */,
- 5976CCA261F0811F5D7707DA /* TokenizationService.swift in Sources */,
- 583EBAA90902121CEA479416 /* VaultService.swift in Sources */,
- 87DF3EC72BA871BD00162100 /* PrimerKlarnaCategoriesViewControllerTests.swift in Sources */,
- 961B5D18058EF4CFCD0185AE /* MockVaultCheckoutViewModel.swift in Sources */,
- 622A605DDEA98D981670B53F /* DropInUI_TokenizationViewModelTests.swift in Sources */,
- 0488648B2BA88F63007BCDA6 /* NetworkRequestFactoryTests.swift in Sources */,
- F03699592AC2E63700E4179D /* (null) in Sources */,
- 208CA849F3187C2DA63CC17B /* HUC_TokenizationViewModelTests.swift in Sources */,
- 213196DEDF2A3A84037ED884 /* PollingModuleTests.swift in Sources */,
- 04F6EF742AE6A06200115D05 /* AnalyticsEventsTests.swift in Sources */,
- 049298012B1DD466002E04B8 /* AnalyticsServiceTests.swift in Sources */,
- 1589385B62C86DE7C735F3EC /* PrimerAPIConfigurationModuleTests.swift in Sources */,
- E130C3D92AFD19FF00AC3E7C /* NetworkTests.swift in Sources */,
- A39750255D4C33527A3766A0 /* UserInterfaceModuleTests.swift in Sources */,
- 0479FB192AF2599A00D0AFC9 /* StringTyper.swift in Sources */,
- 3EE90DEB1DB7BE9270FB17BF /* URLSessionStackTests.swift in Sources */,
- 2C98B33ECA68109C7A6AA134 /* PrimerBancontactCardDataManagerTests.swift in Sources */,
- 876140F62B716E060058CA8C /* KlarnaTokenizationManagerTests.swift in Sources */,
- 05FAC0D894B841B52E9E0A9A /* PrimerRawCardDataManagerTests.swift in Sources */,
- D649870C2D022B4063BDC0B4 /* PrimerRawRetailerDataTests.swift in Sources */,
- A1536BAD2AEBEC3A0087DDC0 /* NolPayPhoneMetadataServiceTests.swift in Sources */,
- F08F63DE2B9F27F4006EF9A9 /* MetadataParserTests.swift in Sources */,
- 04236A9B2B7D2EA50041EC11 /* JWTFactory.swift in Sources */,
- 7F49B29FCC55CF3C5CB6C506 /* InternalCardComponentManagerTests.swift in Sources */,
- DB1A2989DDE0928C62B15303 /* PayPalServiceTests.swift in Sources */,
- 97F0B302DF965C1AD1EC6F4D /* PaymentMethodConfigServiceTests.swift in Sources */,
- 33EA4F728A7984997A0EF515 /* TokenizationServiceTests.swift in Sources */,
- E1A297262B036AB1005ADA51 /* BankComponentTests.swift in Sources */,
- 91FAC91E687B6981268E677E /* DateTests.swift in Sources */,
- 042ED1652AF0F5FD0027833F /* MockRawDataManagerDelegate.swift in Sources */,
- 041295AD2AB9E2C100A4F243 /* PrimerHeadlessNolPayManagerTests.swift in Sources */,
- DC98712939835FB79A20BD63 /* IntExtensionTests.swift in Sources */,
- 044348DE2BB5B3D80072D97C /* DefaultNetworkServiceTests.swift in Sources */,
- 049A05602B4C191D002CEEBA /* NativeUIManagerTests.swift in Sources */,
- 6B2212601374387CB004DA86 /* MaskTests.swift in Sources */,
- C8A64A69AD55D9BF82F0D876 /* StringTests.swift in Sources */,
- 0402B7B82AFBBC2200B02C75 /* ApplePayUtilsTest.swift in Sources */,
- 77A8EFBA78D6C6B95A400C74 /* WebViewUtilTests.swift in Sources */,
- 876140F42B70FBFE0058CA8C /* KlarnaTokenizationComponentTests.swift in Sources */,
- 242EF5037D6FB396B7AE1CB5 /* HeadlessUniversalCheckoutTests.swift in Sources */,
- 042ED15D2AF010500027833F /* CardValidationServiceTests.swift in Sources */,
- 2662EB3445AE8C7188953EFD /* HeadlessVaultManagerTests.swift in Sources */,
- A1A3D0F52AD56BE300F7D8C9 /* NolPayPaymentComponentTests.swift in Sources */,
- 0442B6492B7BA4CD004DB054 /* MockAnalyticsStorage.swift in Sources */,
- 9263BD762EC26F6AA986F0C9 /* MockAPIClient.swift in Sources */,
- A1055D6F2AF125E90027B967 /* DebouncerTests.swift in Sources */,
- 8B5CB0C992DBAB293D378FAD /* MockModule.swift in Sources */,
- E6F85ECD80B64754E7A6D35E /* RawDataManagerTests.swift in Sources */,
+ F03699592AC2E63700E4179D /* BuildFile in Sources */,
+ 04F323612BD408C600F5927C /* AppetizeConfigTests.swift in Sources */,
+ 04F323632BD408C600F5927C /* MetadataParserTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1215,14 +623,16 @@
60F7E716B34BE721651566DA /* Data+Extensions.swift in Sources */,
CE5E673A96BB5B96AE5EFC56 /* Range+Extensions.swift in Sources */,
85605C241F1CD45BA676D4A7 /* String+Extensions.swift in Sources */,
+ 04F323662BD40A2300F5927C /* MerchantNewLineItemViewController.swift in Sources */,
0BB8BB3F9A6AC28A0C107DC8 /* UIStackViewExtensions.swift in Sources */,
DE53DA2D0AD108306C92E198 /* UIViewController+API.swift in Sources */,
85EDC3F175D699BFF6BD48EF /* ViewController+Primer.swift in Sources */,
- E11F47482B06C4E30091C31F /* MerchantHeadlessCheckoutBankViewController.swift in Sources */,
60F6C3AFA11A7EDB0687856A /* ViewController+PrimerUIHelpers.swift in Sources */,
5E24CD5B3084FE3E8A3E85EC /* CheckoutTheme.swift in Sources */,
+ 04F323642BD409FE00F5927C /* BanksListModel.swift in Sources */,
AAE3B30B64B6822A20987FCA /* CreateClientToken.swift in Sources */,
F08F63D82B9B5A7C006EF9A9 /* SessionConfiguration.swift in Sources */,
+ 04F323652BD40A0E00F5927C /* MerchantHeadlessCheckoutBankViewController.swift in Sources */,
876141082B8346650058CA8C /* MerchantHeadlessKlarnaInitializationView.swift in Sources */,
C75A11E6AEEFC2B7A29BBC04 /* TestScenario.swift in Sources */,
F08F63DC2B9F27B0006EF9A9 /* MetadataParser.swift in Sources */,
@@ -1232,7 +642,6 @@
049A055E2B4BF057002CEEBA /* MerchantHeadlessVaultManagerViewController.swift in Sources */,
53E3182FFC4E5F05D866CFAE /* Networking.swift in Sources */,
592E00D98C8835CBCDAA26D9 /* MerchantDropInUIViewController.swift in Sources */,
- E11F474C2B06C4E30091C31F /* MerchantNewLineItemViewController.swift in Sources */,
8761410A2B8355920058CA8C /* MerchantHeadlessKlarnaInitializationViewModel.swift in Sources */,
041295AA2AB9E25D00A4F243 /* MerchantHeadlessCheckoutNolPayViewController.swift in Sources */,
135E5BFD51371FABB5FF35D3 /* MerchantHeadlessCheckoutAvailablePaymentMethodsViewController.swift in Sources */,
@@ -1241,13 +650,13 @@
72F8D6065334FCD5B726A52C /* MerchantHeadlessCheckoutRawPhoneNumberDataViewController.swift in Sources */,
14EE32F4821BD1F19F75227F /* MerchantHeadlessCheckoutRawRetailDataViewController.swift in Sources */,
F02F496FD20B5291C044F62C /* MerchantResultViewController.swift in Sources */,
+ 04F3235C2BD2F99000F5927C /* UIApplication+Extensions.swift in Sources */,
8761410C2B849A250058CA8C /* MerchantHeadlessKlarnaInitializationView+Elements.swift in Sources */,
876140EF2B6BE8C20058CA8C /* MerchantHelpers.swift in Sources */,
0489E2BB2B68F71300FA0682 /* TapGestureRecognizer.swift in Sources */,
F08F63DA2B9B5BC5006EF9A9 /* AppetizeConfigProvider.swift in Sources */,
E11F47562B06C5030091C31F /* ImageViewWithUrl.swift in Sources */,
34CDCA7B403C001E4C55D26D /* MerchantSessionAndSettingsViewController.swift in Sources */,
- E11F474A2B06C4E30091C31F /* BanksListModel.swift in Sources */,
876140E62B67F3B30058CA8C /* MerchantHeadlessCheckoutKlarnaViewController+Klarna.swift in Sources */,
C0115AC7BC96FDF49EF8E530 /* PaymentMethodCell.swift in Sources */,
);
@@ -1315,7 +724,7 @@
/* Begin XCBuildConfiguration section */
313E094F25A94116E340B043 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 97731417340A948FC8CD6ED8 /* Pods-Debug App.debug.xcconfig */;
+ baseConfigurationReference = BB7C19D2A72C70B70AA4DF8C /* Pods-Debug App.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "$(SRCROOT)/ExampleApp.entitlements";
@@ -1350,7 +759,7 @@
};
44381669975E0C07E78FA641 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = DEC0E14FABFAE4D0EFC3A585 /* Pods-Debug App.release.xcconfig */;
+ baseConfigurationReference = 1F278229D66AFE30C9C39085 /* Pods-Debug App.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "$(SRCROOT)/ExampleApp.entitlements";
@@ -1384,7 +793,7 @@
};
5434DA74E34D2EBEBD3D74C7 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = B08BF9387885E3CCB33008A2 /* Pods-Debug App Tests.debug.xcconfig */;
+ baseConfigurationReference = 27B211EA3949D1672A82B5F6 /* Pods-Debug App Tests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -1467,7 +876,7 @@
};
F10A44A87CE1B40DAFF5D30F /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 28249328E3C719F45A8196C9 /* Pods-Debug App Tests.release.xcconfig */;
+ baseConfigurationReference = 85AFC960D1A9EB56C4561471 /* Pods-Debug App Tests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_IDENTITY = "iPhone Developer";
diff --git a/Debug App/Sources/Extension/UIApplication+Extensions.swift b/Debug App/Sources/Extension/UIApplication+Extensions.swift
new file mode 100644
index 0000000000..7362fa81cd
--- /dev/null
+++ b/Debug App/Sources/Extension/UIApplication+Extensions.swift
@@ -0,0 +1,23 @@
+//
+// UIApplication+Extensions.swift
+// Debug App
+//
+// Created by Jack Newcombe on 19/04/2024.
+// Copyright © 2024 Primer API Ltd. All rights reserved.
+//
+
+import UIKit
+
+extension UIApplication {
+ var windows: [UIWindow] {
+ let windowScene = self.connectedScenes.compactMap{ $0 as? UIWindowScene }.first
+ guard let windows = windowScene?.windows else {
+ return []
+ }
+ return windows
+ }
+
+ var keyWindow: UIWindow? {
+ return windows.first
+ }
+}
diff --git a/Debug App/Tests/Unit Tests/Utils/AppetizeConfigTests.swift b/Debug App/Tests/AppetizeConfigTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/AppetizeConfigTests.swift
rename to Debug App/Tests/AppetizeConfigTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/MetadataParserTests.swift b/Debug App/Tests/MetadataParserTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/MetadataParserTests.swift
rename to Debug App/Tests/MetadataParserTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Legacy/NetworkTests.swift b/Debug App/Tests/Unit Tests/Network/Legacy/NetworkTests.swift
deleted file mode 100644
index fc8fdfddc6..0000000000
--- a/Debug App/Tests/Unit Tests/Network/Legacy/NetworkTests.swift
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// NetworkTests.swift
-// Debug App Tests
-//
-// Created by Alexandra Lovin on 09.11.2023.
-// Copyright © 2023 Primer API Ltd. All rights reserved.
-//
-
-import XCTest
-@testable import Debug_App
-final class NetworkTests: XCTestCase {
-
- func test_http_headers_new_workflows() {
- XCTAssertNil(URL.requestSessionHTTPHeaders(useNewWorkflows: false))
- XCTAssertEqual(URL.requestSessionHTTPHeaders(useNewWorkflows: true), ["Legacy-Workflows": "false"])
- }
-}
diff --git a/Package.swift b/Package.swift
index 80c699d9b3..270e157592 100644
--- a/Package.swift
+++ b/Package.swift
@@ -22,6 +22,13 @@ let package = Package(
.process("Resources"),
.copy("Classes/Third Party/PromiseKit/LICENSE")
]
+ ),
+ .testTarget(
+ name: "PrimerSDKTests",
+ dependencies: [
+ .byName(name: "PrimerSDK")
+ ],
+ path: "Tests/Unit Tests"
)
],
swiftLanguageVersions: [.v5]
diff --git a/Sources/PrimerSDK/Classes/Core/Analytics/AnalyticsStorage.swift b/Sources/PrimerSDK/Classes/Core/Analytics/AnalyticsStorage.swift
index 4f98a90c2f..fe57284976 100644
--- a/Sources/PrimerSDK/Classes/Core/Analytics/AnalyticsStorage.swift
+++ b/Sources/PrimerSDK/Classes/Core/Analytics/AnalyticsStorage.swift
@@ -58,6 +58,7 @@ extension Analytics {
func save(_ events: [Analytics.Event]) throws {
do {
let eventsData = try JSONEncoder().encode(events)
+ try FileManager.default.createDirectory(at: fileURL.deletingLastPathComponent(), withIntermediateDirectories: true)
try eventsData.write(to: fileURL)
} catch {
logger.error(message: "📚 Analytics: Failed to save file \(error.localizedDescription)")
diff --git a/Sources/PrimerSDK/Classes/User Interface/TokenizationViewModels/WebRedirectPaymentMethodTokenizationViewModel.swift b/Sources/PrimerSDK/Classes/User Interface/TokenizationViewModels/WebRedirectPaymentMethodTokenizationViewModel.swift
index 609257d7d3..33aef8b9a0 100644
--- a/Sources/PrimerSDK/Classes/User Interface/TokenizationViewModels/WebRedirectPaymentMethodTokenizationViewModel.swift
+++ b/Sources/PrimerSDK/Classes/User Interface/TokenizationViewModels/WebRedirectPaymentMethodTokenizationViewModel.swift
@@ -199,6 +199,16 @@ class WebRedirectPaymentMethodTokenizationViewModel: PaymentMethodTokenizationVi
)
Analytics.Service.record(events: [presentEvent, networkEvent])
+
+ #if DEBUG
+ // This ensures that the presentation completion is correctly handled in headless unit tests
+ guard UIApplication.shared.windows.count > 0 else {
+ self.handleWebViewControllerPresentedCompletion()
+ seal.fulfill()
+ return
+ }
+ #endif
+
if PrimerUIManager.primerRootViewController == nil {
firstly {
PrimerUIManager.prepareRootViewController()
@@ -206,7 +216,7 @@ class WebRedirectPaymentMethodTokenizationViewModel: PaymentMethodTokenizationVi
.done {
PrimerUIManager.primerRootViewController?.present(self.webViewController!, animated: true, completion: {
DispatchQueue.main.async {
- self.handleWebViewControlllerPresentedCompletion()
+ self.handleWebViewControllerPresentedCompletion()
seal.fulfill()
}
})
@@ -215,7 +225,7 @@ class WebRedirectPaymentMethodTokenizationViewModel: PaymentMethodTokenizationVi
} else {
PrimerUIManager.primerRootViewController?.present(self.webViewController!, animated: true, completion: {
DispatchQueue.main.async {
- self.handleWebViewControlllerPresentedCompletion()
+ self.handleWebViewControllerPresentedCompletion()
seal.fulfill()
}
})
@@ -224,7 +234,7 @@ class WebRedirectPaymentMethodTokenizationViewModel: PaymentMethodTokenizationVi
}
}
- private func handleWebViewControlllerPresentedCompletion() {
+ private func handleWebViewControllerPresentedCompletion() {
DispatchQueue.main.async {
let viewEvent = Analytics.Event.ui(
action: .view,
diff --git a/Debug App/Tests/Unit Tests/Analytics/AnalyticsEventsTests.swift b/Tests/Unit Tests/Analytics/AnalyticsEventsTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Analytics/AnalyticsEventsTests.swift
rename to Tests/Unit Tests/Analytics/AnalyticsEventsTests.swift
diff --git a/Debug App/Tests/Unit Tests/Analytics/AnalyticsServiceTests.swift b/Tests/Unit Tests/Analytics/AnalyticsServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Analytics/AnalyticsServiceTests.swift
rename to Tests/Unit Tests/Analytics/AnalyticsServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Analytics/AnalyticsStorageTests.swift b/Tests/Unit Tests/Analytics/AnalyticsStorageTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Analytics/AnalyticsStorageTests.swift
rename to Tests/Unit Tests/Analytics/AnalyticsStorageTests.swift
diff --git a/Debug App/Tests/Unit Tests/Assets/AssetsManagerTests.swift b/Tests/Unit Tests/Assets/AssetsManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Assets/AssetsManagerTests.swift
rename to Tests/Unit Tests/Assets/AssetsManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/ApplePayTests.swift b/Tests/Unit Tests/Data Models/ApplePayTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/ApplePayTests.swift
rename to Tests/Unit Tests/Data Models/ApplePayTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/CardNetworkTests.swift b/Tests/Unit Tests/Data Models/CardNetworkTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/CardNetworkTests.swift
rename to Tests/Unit Tests/Data Models/CardNetworkTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/CurrencyStorageTests.swift b/Tests/Unit Tests/Data Models/CurrencyStorageTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/CurrencyStorageTests.swift
rename to Tests/Unit Tests/Data Models/CurrencyStorageTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/DecodedClientToken.swift b/Tests/Unit Tests/Data Models/DecodedClientToken.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/DecodedClientToken.swift
rename to Tests/Unit Tests/Data Models/DecodedClientToken.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/IPay88Tests.swift b/Tests/Unit Tests/Data Models/IPay88Tests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/IPay88Tests.swift
rename to Tests/Unit Tests/Data Models/IPay88Tests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/PayPalConfirmBillingAgreementTests.swift b/Tests/Unit Tests/Data Models/PayPalConfirmBillingAgreementTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/PayPalConfirmBillingAgreementTests.swift
rename to Tests/Unit Tests/Data Models/PayPalConfirmBillingAgreementTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/PaymentMethodConfigTests.swift b/Tests/Unit Tests/Data Models/PaymentMethodConfigTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/PaymentMethodConfigTests.swift
rename to Tests/Unit Tests/Data Models/PaymentMethodConfigTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/PrimerCheckoutTheme.swift b/Tests/Unit Tests/Data Models/PrimerCheckoutTheme.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/PrimerCheckoutTheme.swift
rename to Tests/Unit Tests/Data Models/PrimerCheckoutTheme.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/ThemeTests.swift b/Tests/Unit Tests/Data Models/ThemeTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/ThemeTests.swift
rename to Tests/Unit Tests/Data Models/ThemeTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift b/Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift
similarity index 99%
rename from Debug App/Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift
rename to Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift
index ac0ad49348..50ba29ee95 100644
--- a/Debug App/Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift
+++ b/Tests/Unit Tests/Data Models/ThreeDSErrorTests.swift
@@ -6,9 +6,10 @@
// Copyright © 2023 Primer API Ltd. All rights reserved.
//
+#if canImport(Primer3DS)
import XCTest
@testable import PrimerSDK
-@testable import Primer3DS
+import Primer3DS
class ThreeDSErrorTests: XCTestCase {
@@ -189,3 +190,4 @@ class ThreeDSErrorTests: XCTestCase {
threeDsErrorDetail: primer3DSError.threeDsErrorDetail))
}
}
+#endif
diff --git a/Debug App/Tests/Unit Tests/Data Models/ThreeDSProtocolVersionTests.swift b/Tests/Unit Tests/Data Models/ThreeDSProtocolVersionTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/ThreeDSProtocolVersionTests.swift
rename to Tests/Unit Tests/Data Models/ThreeDSProtocolVersionTests.swift
diff --git a/Debug App/Tests/Unit Tests/Data Models/TokenizationResponseTests.swift b/Tests/Unit Tests/Data Models/TokenizationResponseTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Data Models/TokenizationResponseTests.swift
rename to Tests/Unit Tests/Data Models/TokenizationResponseTests.swift
diff --git a/Debug App/Tests/Unit Tests/Extensions/EncodingDecodingContainerTests.swift b/Tests/Unit Tests/Extensions/EncodingDecodingContainerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Extensions/EncodingDecodingContainerTests.swift
rename to Tests/Unit Tests/Extensions/EncodingDecodingContainerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Extensions/StringExtensionTests.swift b/Tests/Unit Tests/Extensions/StringExtensionTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Extensions/StringExtensionTests.swift
rename to Tests/Unit Tests/Extensions/StringExtensionTests.swift
diff --git a/Debug App/Tests/Unit Tests/Helpers/CardData.swift b/Tests/Unit Tests/Helpers/CardData.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Helpers/CardData.swift
rename to Tests/Unit Tests/Helpers/CardData.swift
diff --git a/Debug App/Tests/Unit Tests/Helpers/CurrencyLoaderTests.swift b/Tests/Unit Tests/Helpers/CurrencyLoaderTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Helpers/CurrencyLoaderTests.swift
rename to Tests/Unit Tests/Helpers/CurrencyLoaderTests.swift
diff --git a/Debug App/Tests/Unit Tests/Helpers/Networking.swift b/Tests/Unit Tests/Helpers/Networking.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Helpers/Networking.swift
rename to Tests/Unit Tests/Helpers/Networking.swift
diff --git a/Debug App/Tests/Unit Tests/Helpers/Promises+Helper.swift b/Tests/Unit Tests/Helpers/Promises+Helper.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Helpers/Promises+Helper.swift
rename to Tests/Unit Tests/Helpers/Promises+Helper.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks.swift b/Tests/Unit Tests/Mocks.swift
similarity index 99%
rename from Debug App/Tests/Unit Tests/Mocks.swift
rename to Tests/Unit Tests/Mocks.swift
index a8009c2d6d..c177c6dc0c 100644
--- a/Debug App/Tests/Unit Tests/Mocks.swift
+++ b/Tests/Unit Tests/Mocks.swift
@@ -371,7 +371,7 @@ class MockPrimerAPIConfigurationModule: PrimerAPIConfigurationModuleProtocol {
// MARK: - MOCKED PROPERTIES
- var mockedNetworkDelay: TimeInterval = 2
+ var mockedNetworkDelay: TimeInterval = 0.5
var mockedAPIConfiguration: PrimerAPIConfiguration?
func setupSession(
diff --git a/Debug App/Tests/Unit Tests/Mocks/Analytics/MockAnalyticsStorage.swift b/Tests/Unit Tests/Mocks/Analytics/MockAnalyticsStorage.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Analytics/MockAnalyticsStorage.swift
rename to Tests/Unit Tests/Mocks/Analytics/MockAnalyticsStorage.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Analytics/MockPrimerAPIAnalyticsClient.swift b/Tests/Unit Tests/Mocks/Analytics/MockPrimerAPIAnalyticsClient.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Analytics/MockPrimerAPIAnalyticsClient.swift
rename to Tests/Unit Tests/Mocks/Analytics/MockPrimerAPIAnalyticsClient.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Delegates/MockRawDataManagerDelegate.swift b/Tests/Unit Tests/Mocks/Delegates/MockRawDataManagerDelegate.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Delegates/MockRawDataManagerDelegate.swift
rename to Tests/Unit Tests/Mocks/Delegates/MockRawDataManagerDelegate.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/MockPaymentMethodTokenizationViewModel.swift b/Tests/Unit Tests/Mocks/MockPaymentMethodTokenizationViewModel.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/MockPaymentMethodTokenizationViewModel.swift
rename to Tests/Unit Tests/Mocks/MockPaymentMethodTokenizationViewModel.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/CreateResumePaymentService.swift b/Tests/Unit Tests/Mocks/Services/CreateResumePaymentService.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/CreateResumePaymentService.swift
rename to Tests/Unit Tests/Mocks/Services/CreateResumePaymentService.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/MockBINDataAPIClient.swift b/Tests/Unit Tests/Mocks/Services/MockBINDataAPIClient.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/MockBINDataAPIClient.swift
rename to Tests/Unit Tests/Mocks/Services/MockBINDataAPIClient.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/NetworkService.swift b/Tests/Unit Tests/Mocks/Services/NetworkService.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/NetworkService.swift
rename to Tests/Unit Tests/Mocks/Services/NetworkService.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/PayPalService.swift b/Tests/Unit Tests/Mocks/Services/PayPalService.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/PayPalService.swift
rename to Tests/Unit Tests/Mocks/Services/PayPalService.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/TokenizationService.swift b/Tests/Unit Tests/Mocks/Services/TokenizationService.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/TokenizationService.swift
rename to Tests/Unit Tests/Mocks/Services/TokenizationService.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/Services/VaultService.swift b/Tests/Unit Tests/Mocks/Services/VaultService.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/Services/VaultService.swift
rename to Tests/Unit Tests/Mocks/Services/VaultService.swift
diff --git a/Debug App/Tests/Unit Tests/Mocks/ViewModels/MockVaultCheckoutViewModel.swift b/Tests/Unit Tests/Mocks/ViewModels/MockVaultCheckoutViewModel.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Mocks/ViewModels/MockVaultCheckoutViewModel.swift
rename to Tests/Unit Tests/Mocks/ViewModels/MockVaultCheckoutViewModel.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/DropInUI_TokenizationViewModelTests.swift b/Tests/Unit Tests/Modules/DropInUI_TokenizationViewModelTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/DropInUI_TokenizationViewModelTests.swift
rename to Tests/Unit Tests/Modules/DropInUI_TokenizationViewModelTests.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/HUC_TokenizationViewModelTests.swift b/Tests/Unit Tests/Modules/HUC_TokenizationViewModelTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/HUC_TokenizationViewModelTests.swift
rename to Tests/Unit Tests/Modules/HUC_TokenizationViewModelTests.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/PollingModuleTests.swift b/Tests/Unit Tests/Modules/PollingModuleTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/PollingModuleTests.swift
rename to Tests/Unit Tests/Modules/PollingModuleTests.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/PrimerAPIConfigurationModuleTests.swift b/Tests/Unit Tests/Modules/PrimerAPIConfigurationModuleTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/PrimerAPIConfigurationModuleTests.swift
rename to Tests/Unit Tests/Modules/PrimerAPIConfigurationModuleTests.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/UserInterfaceModuleTests.swift b/Tests/Unit Tests/Modules/UserInterfaceModuleTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/UserInterfaceModuleTests.swift
rename to Tests/Unit Tests/Modules/UserInterfaceModuleTests.swift
diff --git a/Debug App/Tests/Unit Tests/Modules/XCTestCase+Tokenization.swift b/Tests/Unit Tests/Modules/XCTestCase+Tokenization.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Modules/XCTestCase+Tokenization.swift
rename to Tests/Unit Tests/Modules/XCTestCase+Tokenization.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Endpoints/ListCardNetworksEndpointTests.swift b/Tests/Unit Tests/Network/Endpoints/ListCardNetworksEndpointTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Endpoints/ListCardNetworksEndpointTests.swift
rename to Tests/Unit Tests/Network/Endpoints/ListCardNetworksEndpointTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Factories/NetworkRequestFactoryTests.swift b/Tests/Unit Tests/Network/Factories/NetworkRequestFactoryTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Factories/NetworkRequestFactoryTests.swift
rename to Tests/Unit Tests/Network/Factories/NetworkRequestFactoryTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Factories/NetworkResponseFactoryTests.swift b/Tests/Unit Tests/Network/Factories/NetworkResponseFactoryTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Factories/NetworkResponseFactoryTests.swift
rename to Tests/Unit Tests/Network/Factories/NetworkResponseFactoryTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Legacy/URLSessionStackTests.swift b/Tests/Unit Tests/Network/Legacy/URLSessionStackTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Legacy/URLSessionStackTests.swift
rename to Tests/Unit Tests/Network/Legacy/URLSessionStackTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Services/DefaultNetworkServiceTests.swift b/Tests/Unit Tests/Network/Services/DefaultNetworkServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Services/DefaultNetworkServiceTests.swift
rename to Tests/Unit Tests/Network/Services/DefaultNetworkServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Services/NetworkingReportingServiceTests.swift b/Tests/Unit Tests/Network/Services/NetworkingReportingServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Services/NetworkingReportingServiceTests.swift
rename to Tests/Unit Tests/Network/Services/NetworkingReportingServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Network/Services/RequestDispatcherTests.swift b/Tests/Unit Tests/Network/Services/RequestDispatcherTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Network/Services/RequestDispatcherTests.swift
rename to Tests/Unit Tests/Network/Services/RequestDispatcherTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/CVVRecaptureViewModelTests.swift b/Tests/Unit Tests/Primer/CVVRecaptureViewModelTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/CVVRecaptureViewModelTests.swift
rename to Tests/Unit Tests/Primer/CVVRecaptureViewModelTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift b/Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift
similarity index 79%
rename from Debug App/Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift
rename to Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift
index 0dbe0c4e86..ad311ec97c 100644
--- a/Debug App/Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift
+++ b/Tests/Unit Tests/Primer/Ideal/BankComponentTests.swift
@@ -11,26 +11,21 @@ import XCTest
final class BankComponentTests: XCTestCase {
- var banks: [IssuingBank] = []
- var steps: [BanksStep] = []
+ let expectationTimeout = 5.0
+
var validationErrors: [String] = []
var validationStatuses: [String] = []
var webRedirectComponent: WebRedirectComponent?
+ var mockSteppableDelegate: MockSteppableDelegate!
+
override func setUp() {
- super.setUp()
- cleanup()
+ mockSteppableDelegate = MockSteppableDelegate()
}
override func tearDown() {
- super.tearDown()
- cleanup()
- }
-
- func cleanup() {
webRedirectComponent = nil
- banks.removeAll()
- steps.removeAll()
+ mockSteppableDelegate = nil
validationErrors.removeAll()
validationStatuses.removeAll()
}
@@ -72,18 +67,18 @@ final class BankComponentTests: XCTestCase {
redirectExpectation.fulfill()
return self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
XCTAssertNil(bankComponent.bankId)
bankComponent.start()
let banksRetrievedExpectation = expectation(description: "banks_retrieved")
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
- XCTAssertEqual(self.banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
+ mockSteppableDelegate.onReceiveBanks = { banks in
+ XCTAssertEqual(banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankId(bankId: bankId))
XCTAssertEqual(bankComponent.bankId, bankId)
bankComponent.submit()
banksRetrievedExpectation.fulfill()
}
- waitForExpectations(timeout: 10)
+ waitForExpectations(timeout: self.expectationTimeout)
XCTAssertNotNil(webRedirectComponent)
}
@@ -92,16 +87,16 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
bankComponent.start()
let expectation = expectation(description: "banks_retrieved")
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
- XCTAssertEqual(self.banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
- XCTAssertEqual(self.banks.map { $0.id }, mockModel.mockBanks.map { $0.id })
- XCTAssertEqual(self.steps, [.loading, .banksRetrieved(banks: mockModel.mockBanks.map { IssuingBank(bank: $0) })])
+ mockSteppableDelegate.onReceiveBanks = { banks in
+ XCTAssertEqual(banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
+ XCTAssertEqual(banks.map { $0.id }, mockModel.mockBanks.map { $0.id })
+ XCTAssertEqual(self.mockSteppableDelegate.steps, [.loading, .banksRetrieved(banks: mockModel.mockBanks.map { IssuingBank(bank: $0) })])
expectation.fulfill()
}
- waitForExpectations(timeout: 10)
+ waitForExpectations(timeout: self.expectationTimeout)
}
func testFilterBanks() {
@@ -109,18 +104,32 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
- bankComponent.start()
+ bankComponent.stepDelegate = mockSteppableDelegate
+
+ let firstBanksResult = mockModel.mockBanks.map { IssuingBank(bank: $0) }
+ let secondBanksResult = mockModel.mockBanks.filter {
+ $0.name == MockBankSelectorTokenizationModel.bankNameToBeFiltered
+ }.map { IssuingBank(bank: $0) }
+
let expectation = expectation(description: "banks_filtered")
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
- XCTAssertEqual(self.banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
+ mockSteppableDelegate.onReceiveBanks = { banks in
+ XCTAssertEqual(banks.map { $0.name }, mockModel.mockBanks.map { $0.name })
+ self.mockSteppableDelegate.onReceiveBanks = { banks in
+ XCTAssertTrue(mockModel.didCallFilter)
+ XCTAssertEqual(banks.map { $0.name }, [MockBankSelectorTokenizationModel.bankNameToBeFiltered])
+ XCTAssertEqual(self.mockSteppableDelegate.steps, [
+ .loading,
+ .banksRetrieved(banks: firstBanksResult),
+ .banksRetrieved(banks: secondBanksResult)
+ ])
+ expectation.fulfill()
+ }
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankFilterText(text: "filter_query"))
- XCTAssertTrue(mockModel.didCallFilter)
- XCTAssertEqual(self.banks.map { $0.name }, [MockBankSelectorTokenizationModel.bankNameToBeFiltered])
- expectation.fulfill()
- XCTAssertEqual(self.steps, [.loading, .banksRetrieved(banks: mockModel.mockBanks.map { IssuingBank(bank: $0) }), .banksRetrieved(banks: mockModel.mockBanks.filter { $0.name == MockBankSelectorTokenizationModel.bankNameToBeFiltered }.map { IssuingBank(bank: $0) })])
}
- waitForExpectations(timeout: 10)
+
+ bankComponent.start()
+
+ waitForExpectations(timeout: self.expectationTimeout)
}
func testValidationNoBanksAtSelection() {
@@ -128,7 +137,7 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
bankComponent.validationDelegate = self
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankId(bankId: "mock_id"))
XCTAssertEqual(validationStatuses, ["validating", "invalid"])
@@ -140,7 +149,7 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
bankComponent.validationDelegate = self
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankFilterText(text: "mock_query"))
XCTAssertEqual(validationStatuses, ["validating", "invalid"])
@@ -152,19 +161,18 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
bankComponent.validationDelegate = self
- bankComponent.stepDelegate = self
bankComponent.start()
let expectation = expectation(description: "banks_retrieved")
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
+ mockSteppableDelegate.onReceiveBanks = { _ in
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankId(bankId: "0"))
XCTAssertEqual(self.validationStatuses, ["validating", "valid"])
XCTAssertTrue(self.validationErrors.isEmpty)
expectation.fulfill()
- }
- waitForExpectations(timeout: 10)
+ }
+ waitForExpectations(timeout: self.expectationTimeout)
}
func testValidationForInvalidBankId() {
@@ -172,23 +180,30 @@ final class BankComponentTests: XCTestCase {
let bankComponent = DefaultBanksComponent(paymentMethodType: .adyenIDeal, tokenizationProvidingModel: mockModel) {
self.webRedirectComponent(tokenizationModelDelegate: mockModel)
}
- bankComponent.stepDelegate = self
+ bankComponent.stepDelegate = mockSteppableDelegate
bankComponent.validationDelegate = self
- bankComponent.stepDelegate = self
bankComponent.start()
let expectation = expectation(description: "banks_retrieved")
- DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
+ mockSteppableDelegate.onReceiveBanks = { _ in
bankComponent.updateCollectedData(collectableData: BanksCollectableData.bankId(bankId: "mock_bank_id"))
XCTAssertEqual(self.validationStatuses, ["validating", "invalid"])
XCTAssertEqual(self.validationErrors, ["Please provide a valid bank id"])
expectation.fulfill()
}
- waitForExpectations(timeout: 10)
+ waitForExpectations(timeout: self.expectationTimeout)
}
}
-extension BankComponentTests: PrimerHeadlessSteppableDelegate {
+class MockSteppableDelegate: PrimerHeadlessSteppableDelegate {
+
+ var banks: [IssuingBank] = []
+ var steps: [BanksStep] = []
+
+ var onReceiveStep: ((PrimerHeadlessStep) -> Void)?
+
+ var onReceiveBanks: (([IssuingBank]) -> Void)?
+
func didReceiveStep(step: PrimerHeadlessStep) {
guard let step = step as? BanksStep else {
return
@@ -197,6 +212,7 @@ extension BankComponentTests: PrimerHeadlessSteppableDelegate {
switch step {
case .loading: break
case .banksRetrieved(banks: let banks):
+ self.onReceiveBanks?(banks)
self.banks = banks
}
}
diff --git a/Debug App/Tests/Unit Tests/Primer/Ideal/IdealPaymentMethodTests.swift b/Tests/Unit Tests/Primer/Ideal/IdealPaymentMethodTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Ideal/IdealPaymentMethodTests.swift
rename to Tests/Unit Tests/Primer/Ideal/IdealPaymentMethodTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Ideal/PrimerHeadlessFormWithRedirectManagerTests.swift b/Tests/Unit Tests/Primer/Ideal/PrimerHeadlessFormWithRedirectManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Ideal/PrimerHeadlessFormWithRedirectManagerTests.swift
rename to Tests/Unit Tests/Primer/Ideal/PrimerHeadlessFormWithRedirectManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Ideal/WebRedirectComponentTests.swift b/Tests/Unit Tests/Primer/Ideal/WebRedirectComponentTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Ideal/WebRedirectComponentTests.swift
rename to Tests/Unit Tests/Primer/Ideal/WebRedirectComponentTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaComponentTests.swift b/Tests/Unit Tests/Primer/Klarna/KlarnaComponentTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaComponentTests.swift
rename to Tests/Unit Tests/Primer/Klarna/KlarnaComponentTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaHeadlessManagerTests.swift b/Tests/Unit Tests/Primer/Klarna/KlarnaHeadlessManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaHeadlessManagerTests.swift
rename to Tests/Unit Tests/Primer/Klarna/KlarnaHeadlessManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTestsMocks.swift b/Tests/Unit Tests/Primer/Klarna/KlarnaTestsMocks.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTestsMocks.swift
rename to Tests/Unit Tests/Primer/Klarna/KlarnaTestsMocks.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationComponentTests.swift b/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationComponentTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationComponentTests.swift
rename to Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationComponentTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationManagerTests.swift b/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationManagerTests.swift
rename to Tests/Unit Tests/Primer/Klarna/KlarnaTokenizationManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/Klarna/PrimerKlarnaCategoriesViewControllerTests.swift b/Tests/Unit Tests/Primer/Klarna/PrimerKlarnaCategoriesViewControllerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/Klarna/PrimerKlarnaCategoriesViewControllerTests.swift
rename to Tests/Unit Tests/Primer/Klarna/PrimerKlarnaCategoriesViewControllerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NativeUIManagerTests.swift b/Tests/Unit Tests/Primer/NativeUIManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NativeUIManagerTests.swift
rename to Tests/Unit Tests/Primer/NativeUIManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolPayLinkCardComponentTest.swift b/Tests/Unit Tests/Primer/NolPay/NolPayLinkCardComponentTest.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolPayLinkCardComponentTest.swift
rename to Tests/Unit Tests/Primer/NolPay/NolPayLinkCardComponentTest.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolPayLinkedCardsComponentTests.swift b/Tests/Unit Tests/Primer/NolPay/NolPayLinkedCardsComponentTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolPayLinkedCardsComponentTests.swift
rename to Tests/Unit Tests/Primer/NolPay/NolPayLinkedCardsComponentTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolPayPaymentComponentTests.swift b/Tests/Unit Tests/Primer/NolPay/NolPayPaymentComponentTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolPayPaymentComponentTests.swift
rename to Tests/Unit Tests/Primer/NolPay/NolPayPaymentComponentTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolPayPhoneMetadataServiceTests.swift b/Tests/Unit Tests/Primer/NolPay/NolPayPhoneMetadataServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolPayPhoneMetadataServiceTests.swift
rename to Tests/Unit Tests/Primer/NolPay/NolPayPhoneMetadataServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolPayUnlinkCardComponentTest.swift b/Tests/Unit Tests/Primer/NolPay/NolPayUnlinkCardComponentTest.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolPayUnlinkCardComponentTest.swift
rename to Tests/Unit Tests/Primer/NolPay/NolPayUnlinkCardComponentTest.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/NolTestsMocks.swift b/Tests/Unit Tests/Primer/NolPay/NolTestsMocks.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/NolTestsMocks.swift
rename to Tests/Unit Tests/Primer/NolPay/NolTestsMocks.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/NolPay/PrimerHeadlessNolPayManagerTests.swift b/Tests/Unit Tests/Primer/NolPay/PrimerHeadlessNolPayManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/NolPay/PrimerHeadlessNolPayManagerTests.swift
rename to Tests/Unit Tests/Primer/NolPay/PrimerHeadlessNolPayManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/PrimerBancontactCardDataManagerTests.swift b/Tests/Unit Tests/Primer/PrimerBancontactCardDataManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/PrimerBancontactCardDataManagerTests.swift
rename to Tests/Unit Tests/Primer/PrimerBancontactCardDataManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/PrimerInputElementTests.swift b/Tests/Unit Tests/Primer/PrimerInputElementTests.swift
similarity index 99%
rename from Debug App/Tests/Unit Tests/Primer/PrimerInputElementTests.swift
rename to Tests/Unit Tests/Primer/PrimerInputElementTests.swift
index 3936e37417..63a3e9817a 100644
--- a/Debug App/Tests/Unit Tests/Primer/PrimerInputElementTests.swift
+++ b/Tests/Unit Tests/Primer/PrimerInputElementTests.swift
@@ -111,6 +111,7 @@ private extension CardNetwork {
case .amex:
return ["1234", "4567", "8901"]
case .bancontact,
+ .cartesBancaires,
.diners,
.discover,
.elo,
diff --git a/Debug App/Tests/Unit Tests/Primer/PrimerRawCardDataManagerTests.swift b/Tests/Unit Tests/Primer/PrimerRawCardDataManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/PrimerRawCardDataManagerTests.swift
rename to Tests/Unit Tests/Primer/PrimerRawCardDataManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Primer/PrimerRawRetailerDataTests.swift b/Tests/Unit Tests/Primer/PrimerRawRetailerDataTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Primer/PrimerRawRetailerDataTests.swift
rename to Tests/Unit Tests/Primer/PrimerRawRetailerDataTests.swift
diff --git a/Debug App/Tests/Unit Tests/Services/CardValidationServiceTests.swift b/Tests/Unit Tests/Services/CardValidationServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Services/CardValidationServiceTests.swift
rename to Tests/Unit Tests/Services/CardValidationServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Services/InternalCardComponentManagerTests.swift b/Tests/Unit Tests/Services/InternalCardComponentManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Services/InternalCardComponentManagerTests.swift
rename to Tests/Unit Tests/Services/InternalCardComponentManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Services/PayPalServiceTests.swift b/Tests/Unit Tests/Services/PayPalServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Services/PayPalServiceTests.swift
rename to Tests/Unit Tests/Services/PayPalServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Services/PaymentMethodConfigServiceTests.swift b/Tests/Unit Tests/Services/PaymentMethodConfigServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Services/PaymentMethodConfigServiceTests.swift
rename to Tests/Unit Tests/Services/PaymentMethodConfigServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Services/TokenizationServiceTests.swift b/Tests/Unit Tests/Services/TokenizationServiceTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Services/TokenizationServiceTests.swift
rename to Tests/Unit Tests/Services/TokenizationServiceTests.swift
diff --git a/Debug App/Tests/Unit Tests/Test Utilities/CodingUtilities.swift b/Tests/Unit Tests/Test Utilities/CodingUtilities.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Test Utilities/CodingUtilities.swift
rename to Tests/Unit Tests/Test Utilities/CodingUtilities.swift
diff --git a/Debug App/Tests/Unit Tests/Test Utilities/JWTFactory.swift b/Tests/Unit Tests/Test Utilities/JWTFactory.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Test Utilities/JWTFactory.swift
rename to Tests/Unit Tests/Test Utilities/JWTFactory.swift
diff --git a/Debug App/Tests/Unit Tests/Test Utilities/SDKSessionHelper.swift b/Tests/Unit Tests/Test Utilities/SDKSessionHelper.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Test Utilities/SDKSessionHelper.swift
rename to Tests/Unit Tests/Test Utilities/SDKSessionHelper.swift
diff --git a/Debug App/Tests/Unit Tests/Test Utilities/StringTyper.swift b/Tests/Unit Tests/Test Utilities/StringTyper.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Test Utilities/StringTyper.swift
rename to Tests/Unit Tests/Test Utilities/StringTyper.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/ApplePayUtilsTest.swift b/Tests/Unit Tests/Utils/ApplePayUtilsTest.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/ApplePayUtilsTest.swift
rename to Tests/Unit Tests/Utils/ApplePayUtilsTest.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/CharacterSet+Utils.swift b/Tests/Unit Tests/Utils/CharacterSet+Utils.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/CharacterSet+Utils.swift
rename to Tests/Unit Tests/Utils/CharacterSet+Utils.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/DateTests.swift b/Tests/Unit Tests/Utils/DateTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/DateTests.swift
rename to Tests/Unit Tests/Utils/DateTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/DebouncerTests.swift b/Tests/Unit Tests/Utils/DebouncerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/DebouncerTests.swift
rename to Tests/Unit Tests/Utils/DebouncerTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/IntExtensionTests.swift b/Tests/Unit Tests/Utils/IntExtensionTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/IntExtensionTests.swift
rename to Tests/Unit Tests/Utils/IntExtensionTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/MaskTests.swift b/Tests/Unit Tests/Utils/MaskTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/MaskTests.swift
rename to Tests/Unit Tests/Utils/MaskTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/StringTests.swift b/Tests/Unit Tests/Utils/StringTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/StringTests.swift
rename to Tests/Unit Tests/Utils/StringTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/VersionUtilsTests.swift b/Tests/Unit Tests/Utils/VersionUtilsTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/VersionUtilsTests.swift
rename to Tests/Unit Tests/Utils/VersionUtilsTests.swift
diff --git a/Debug App/Tests/Unit Tests/Utils/WebViewUtilTests.swift b/Tests/Unit Tests/Utils/WebViewUtilTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/Utils/WebViewUtilTests.swift
rename to Tests/Unit Tests/Utils/WebViewUtilTests.swift
diff --git a/Debug App/Tests/Unit Tests/v2/HeadlessUniversalCheckoutTests.swift b/Tests/Unit Tests/v2/HeadlessUniversalCheckoutTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/v2/HeadlessUniversalCheckoutTests.swift
rename to Tests/Unit Tests/v2/HeadlessUniversalCheckoutTests.swift
diff --git a/Debug App/Tests/Unit Tests/v2/HeadlessVaultManagerTests.swift b/Tests/Unit Tests/v2/HeadlessVaultManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/v2/HeadlessVaultManagerTests.swift
rename to Tests/Unit Tests/v2/HeadlessVaultManagerTests.swift
diff --git a/Debug App/Tests/Unit Tests/v2/MockAPIClient.swift b/Tests/Unit Tests/v2/MockAPIClient.swift
similarity index 99%
rename from Debug App/Tests/Unit Tests/v2/MockAPIClient.swift
rename to Tests/Unit Tests/v2/MockAPIClient.swift
index 4dffbc90ed..3be803ad99 100644
--- a/Debug App/Tests/Unit Tests/v2/MockAPIClient.swift
+++ b/Tests/Unit Tests/v2/MockAPIClient.swift
@@ -11,7 +11,7 @@ import XCTest
class MockPrimerAPIClient: PrimerAPIClientProtocol {
- var mockedNetworkDelay: TimeInterval = 1
+ var mockedNetworkDelay: TimeInterval = 0.5
var validateClientTokenResult: (SuccessResponse?, Error?)?
var fetchConfigurationResult: (Response.Body.Configuration?, Error?)?
var fetchConfigurationWithActionsResult: (Response.Body.Configuration?, Error?)?
diff --git a/Debug App/Tests/Unit Tests/v2/MockModule.swift b/Tests/Unit Tests/v2/MockModule.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/v2/MockModule.swift
rename to Tests/Unit Tests/v2/MockModule.swift
diff --git a/Debug App/Tests/Unit Tests/v2/RawDataManagerTests.swift b/Tests/Unit Tests/v2/RawDataManagerTests.swift
similarity index 100%
rename from Debug App/Tests/Unit Tests/v2/RawDataManagerTests.swift
rename to Tests/Unit Tests/v2/RawDataManagerTests.swift
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
index 5589e74686..5e3bf6e37b 100644
--- a/fastlane/Fastfile
+++ b/fastlane/Fastfile
@@ -52,7 +52,7 @@ platform :ios do
podfile: podfile_path
)
- run_tests(workspace: app_workspace,
+ run_tests(workspace: app_workspace,
scheme: "Debug App Tests",
destination: "platform=iOS Simulator,name=iPhone 14 Pro",
xcargs: "EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64",
@@ -112,18 +112,16 @@ platform :ios do
end
desc 'This action builds the app using the SPM integration'
- lane :build_spm do
+ lane :test_spm do
common_pre_build_action
- build_app(workspace: app_workspace,
- scheme: spm_app_scheme,
- sdk: "iphonesimulator",
- configuration: "Debug",
- destination: "generic/platform=iOS Simulator",
- xcargs: "EXCLUDED_ARCHS[sdk=iphonesimulator*]=arm64",
- export_method: "development",
- skip_package_ipa: true,
- skip_package_pkg: true
- )
+ run_tests(
+ package_path: ".",
+ scheme: "PrimerSDKTests",
+ sdk: "iphonesimulator17.2",
+ destination: "OS=17.2,name=iPhone 15 Pro",
+ result_bundle: true,
+ output_directory: Dir.pwd + "/test_output"
+ )
end
lane :build_cocoapods do |options|
@@ -153,7 +151,7 @@ platform :ios do
skip_package_dependencies_resolution: true
)
end
-
+
desc 'This action runs Unit Tests, builds the app and uploads it to Appetize'
lane :appetize_build_and_upload do |options|
@@ -184,7 +182,7 @@ platform :ios do
public_key: public_key,
note: sdk_version_name_source_branch
)
-
+
update_deployment_url(lane_context[SharedValues::APPETIZE_APP_URL])
update_livedemostore_url("https://livedemostore.common.primer.io/ios/#{url_end}")
@@ -244,7 +242,7 @@ platform :ios do
# The build is identified by the contents of CFBundleVersion in Info.plist
version_name = get_appetize_version_name(build_type, pr_number)
-
+
set_info_plist_value(path: info_plist_path, key: "CFBundleVersion", value: version_name)
set_info_plist_value(path: info_plist_path, key: "CFBundleShortVersionString", value: "#{version_name}")
end
@@ -267,7 +265,7 @@ platform :ios do
return "preview_#{pr_number}"
end
end
-
+
def update_deployment_url(pub_url)
sh("echo APPETIZE_APP_URL=#{pub_url} >> $GITHUB_ENV")
end