Skip to content

Commit 7af64a4

Browse files
committed
Update tests
1 parent 10ab1ae commit 7af64a4

14 files changed

+58
-87
lines changed

StripePaymentSheet/StripePaymentSheetTests/PaymentSheet/CustomerSheetSnapshotTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ class CustomerSheetSnapshotTests: STPSnapshotTestCase {
644644
}
645645

646646
private func updatePaymentMethodDetail(data: Data, variables: [String: String]) -> Data {
647-
var template = String(decoding: data, as: UTF8.self)
647+
var template = String(data: data, encoding: .utf8)!
648648
for (templateKey, templateValue) in variables {
649649
let translated = template.replacingOccurrences(of: templateKey, with: templateValue)
650650
template = translated
@@ -661,6 +661,7 @@ class CustomerSheetSnapshotTests: STPSnapshotTestCase {
661661
variables: [
662662
"<paymentMethods>": "\(paymentMethods)",
663663
"<currency>": "\"usd\"",
664+
"<linkMode>": "null",
664665
]
665666
)
666667
}

StripePaymentSheet/StripePaymentSheetTests/PaymentSheet/PaymentSheet+PaymentMethodAvailabilityTest.swift

Lines changed: 15 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,44 +10,21 @@ import XCTest
1010

1111
final class PaymentMethodAvailabilityTest: XCTestCase {
1212

13-
func testIsLinkEnabled_supportsLinkFalse_linkNotPresent() {
13+
func testIsLinkEnabled_linkModeNil() {
1414
let elementsSession = STPElementsSession._testValue(
1515
paymentMethodTypes: ["card"],
16-
isLinkPassthroughModeEnabled: false
16+
linkMode: nil
1717
)
1818
let configuration = PaymentSheet.Configuration()
1919
let isLinkEnabled = PaymentSheet.isLinkEnabled(elementsSession: elementsSession, configuration: configuration)
2020

21-
XCTAssertFalse(isLinkEnabled, "Link should be disabled when supportsLink is false and link is not in payment method types")
22-
}
23-
24-
func testIsLinkEnabled_supportsLinkTrue_linkPresent() {
25-
let elementsSession = STPElementsSession._testValue(
26-
paymentMethodTypes: ["card", "link"],
27-
isLinkPassthroughModeEnabled: false
28-
)
29-
let configuration = PaymentSheet.Configuration()
30-
let isLinkEnabled = PaymentSheet.isLinkEnabled(elementsSession: elementsSession, configuration: configuration)
31-
32-
XCTAssertTrue(isLinkEnabled, "Link should be enabled when isLinkPassthroughModeEnabled is false, since Link is present in the payment method types")
33-
}
34-
35-
func testIsLinkEnabled_supportsLinkTrue_linkNotPresent_passthroughEnabled() {
36-
let elementsSession = STPElementsSession._testValue(
37-
paymentMethodTypes: ["card"],
38-
isLinkPassthroughModeEnabled: true
39-
)
40-
let configuration = PaymentSheet.Configuration()
41-
let isLinkEnabled = PaymentSheet.isLinkEnabled(elementsSession: elementsSession, configuration: configuration)
42-
43-
XCTAssertTrue(isLinkEnabled, "Link should be enabled when supportsLink is true because passthrough mode is enabled")
21+
XCTAssertFalse(isLinkEnabled, "Link should be disabled when linkMode is nil")
4422
}
4523

4624
func testIsLinkEnabled_requiresBillingDetailCollection() {
4725
let elementsSession = STPElementsSession._testValue(
48-
paymentMethodTypes: ["card", "link"],
49-
isLinkPassthroughModeEnabled: true
50-
26+
paymentMethodTypes: ["card"],
27+
linkMode: .passthrough
5128
)
5229
var configuration = PaymentSheet.Configuration()
5330
configuration.billingDetailsCollectionConfiguration.name = .always
@@ -58,9 +35,8 @@ final class PaymentMethodAvailabilityTest: XCTestCase {
5835

5936
func testIsLinkEnabled_cardBrandAcceptanceNotAll() {
6037
let elementsSession = STPElementsSession._testValue(
61-
paymentMethodTypes: ["card", "link"],
62-
isLinkPassthroughModeEnabled: true
63-
38+
paymentMethodTypes: ["card"],
39+
linkMode: .passthrough
6440
)
6541
var configuration = PaymentSheet.Configuration()
6642
configuration.cardBrandAcceptance = .allowed(brands: [.visa])
@@ -69,33 +45,22 @@ final class PaymentMethodAvailabilityTest: XCTestCase {
6945
XCTAssertFalse(isLinkEnabled, "Link should be disabled when card brand acceptance is not 'all'")
7046
}
7147

72-
func testIsLinkEnabled_allConditionsMet() {
48+
func testIsLinkEnabled_linkModePresent() {
7349
// Given
74-
let elementsSession = STPElementsSession._testValue(
75-
paymentMethodTypes: ["card", "link"],
76-
isLinkPassthroughModeEnabled: true
77-
)
78-
let configuration = PaymentSheet.Configuration()
79-
let isLinkEnabled = PaymentSheet.isLinkEnabled(elementsSession: elementsSession, configuration: configuration)
80-
81-
XCTAssertTrue(isLinkEnabled, "Link should be enabled when all conditions are met")
82-
}
83-
84-
func testIsLinkEnabled_linkNotExplicitlyAllowedButPassthroughEnabled() {
8550
let elementsSession = STPElementsSession._testValue(
8651
paymentMethodTypes: ["card"],
87-
isLinkPassthroughModeEnabled: true
52+
linkMode: .passthrough
8853
)
8954
let configuration = PaymentSheet.Configuration()
9055
let isLinkEnabled = PaymentSheet.isLinkEnabled(elementsSession: elementsSession, configuration: configuration)
9156

92-
XCTAssertTrue(isLinkEnabled, "Link should be enabled when passthrough mode is enabled, even if 'link' is not explicitly in payment method types")
57+
XCTAssertTrue(isLinkEnabled, "Link should be enabled when all conditions are met")
9358
}
9459

9560
func testIsLinkEnabled_linkDisplayAutomatic_linkPresent() {
9661
let elementsSession = STPElementsSession._testValue(
9762
paymentMethodTypes: ["card"],
98-
isLinkPassthroughModeEnabled: true
63+
linkMode: .passthrough
9964
)
10065
var configuration = PaymentSheet.Configuration()
10166
configuration.link = .init(display: .automatic)
@@ -107,7 +72,7 @@ final class PaymentMethodAvailabilityTest: XCTestCase {
10772
func testIsLinkEnabled_linkDisplayNever_linkNotPresent() {
10873
let elementsSession = STPElementsSession._testValue(
10974
paymentMethodTypes: ["card"],
110-
isLinkPassthroughModeEnabled: true
75+
linkMode: .passthrough
11176
)
11277
var configuration = PaymentSheet.Configuration()
11378
configuration.link = .init(display: .never)
@@ -166,17 +131,18 @@ extension LinkSettings {
166131
static func _testValue(
167132
disableSignup: Bool = false,
168133
flags: [String: Bool]? = nil,
134+
linkMode: LinkMode? = .passthrough,
169135
linkSupportedPaymentMethodsOnboardingEnabled: [String] = ["CARD"]
170136
) -> LinkSettings {
171137
return .init(
172138
fundingSources: [.card, .bankAccount],
173139
popupWebviewOption: nil,
174-
passthroughModeEnabled: true,
140+
passthroughModeEnabled: linkMode == .passthrough || linkMode == .linkCardBrand,
175141
disableSignup: disableSignup,
176142
suppress2FAModal: false,
177143
disableFlowControllerRUX: true,
178144
useAttestationEndpoints: true,
179-
linkMode: .passthrough,
145+
linkMode: linkMode,
180146
linkFlags: flags,
181147
linkConsumerIncentive: nil,
182148
linkDefaultOptIn: nil,

StripePaymentSheet/StripePaymentSheetTests/PaymentSheet/PaymentSheetFlowControllerViewControllerSnapshotTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ final class PaymentSheetFlowControllerViewControllerSnapshotTests: STPSnapshotTe
1717
func makeTestLoadResult(savedPaymentMethods: [STPPaymentMethod]) -> PaymentSheetLoader.LoadResult {
1818
return .init(
1919
intent: ._testValue(),
20-
elementsSession: ._testValue(paymentMethodTypes: ["card"], isLinkPassthroughModeEnabled: false),
20+
elementsSession: ._testValue(paymentMethodTypes: ["card"], linkMode: nil),
2121
savedPaymentMethods: savedPaymentMethods,
2222
paymentMethodTypes: [.stripe(.card)]
2323
)
@@ -115,7 +115,7 @@ final class PaymentSheetFlowControllerViewControllerSnapshotTests: STPSnapshotTe
115115
intent: ._testValue(),
116116
elementsSession: ._testValue(
117117
paymentMethodTypes: ["card"],
118-
isLinkPassthroughModeEnabled: false
118+
linkMode: nil
119119
),
120120
savedPaymentMethods: [],
121121
paymentMethodTypes: [.stripe(.card)]

StripePaymentSheet/StripePaymentSheetTests/PaymentSheet/PaymentSheetFormFactoryTest.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1833,7 +1833,7 @@ class PaymentSheetFormFactoryTest: XCTestCase {
18331833
func makeForm(intent: Intent) -> PaymentMethodElement {
18341834
return PaymentSheetFormFactory(
18351835
intent: intent,
1836-
elementsSession: ._testValue(intent: intent, isLinkPassthroughModeEnabled: false),
1836+
elementsSession: ._testValue(intent: intent, linkMode: .linkPaymentMethod),
18371837
configuration: .paymentElement(configuration),
18381838
paymentMethod: .stripe(.card),
18391839
linkAccount: PaymentSheetLinkAccount(
@@ -1879,7 +1879,7 @@ class PaymentSheetFormFactoryTest: XCTestCase {
18791879
func makeForm(intent: Intent) -> PaymentMethodElement {
18801880
return PaymentSheetFormFactory(
18811881
intent: intent,
1882-
elementsSession: ._testValue(intent: intent, isLinkPassthroughModeEnabled: false),
1882+
elementsSession: ._testValue(intent: intent, linkMode: .linkPaymentMethod),
18831883
configuration: .paymentElement(configuration),
18841884
paymentMethod: .stripe(.card),
18851885
linkAccount: PaymentSheetLinkAccount(
@@ -1923,7 +1923,7 @@ class PaymentSheetFormFactoryTest: XCTestCase {
19231923
func makeForm(intent: Intent) -> PaymentMethodElement {
19241924
return PaymentSheetFormFactory(
19251925
intent: intent,
1926-
elementsSession: ._testValue(intent: intent, isLinkPassthroughModeEnabled: true),
1926+
elementsSession: ._testValue(intent: intent, linkMode: .passthrough),
19271927
configuration: .paymentElement(configuration),
19281928
paymentMethod: .stripe(.card),
19291929
linkAccount: PaymentSheetLinkAccount(
@@ -1967,7 +1967,7 @@ class PaymentSheetFormFactoryTest: XCTestCase {
19671967
func makeForm(intent: Intent) -> PaymentMethodElement {
19681968
return PaymentSheetFormFactory(
19691969
intent: intent,
1970-
elementsSession: ._testValue(intent: intent, isLinkPassthroughModeEnabled: true),
1970+
elementsSession: ._testValue(intent: intent, linkMode: .passthrough),
19711971
configuration: .paymentElement(configuration),
19721972
paymentMethod: .stripe(.card),
19731973
linkAccount: PaymentSheetLinkAccount(

StripePaymentSheet/StripePaymentSheetTests/PaymentSheet/PaymentSheetSnapshotTests.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@ class PaymentSheetSnapshotTests: STPSnapshotTestCase {
625625
variables: [
626626
"<paymentMethods>": "\"link\"",
627627
"<currency>": "\"USD\"",
628+
"<linkMode>": "\"PASSTHROUGH\"",
628629
]
629630
)
630631
}
@@ -641,6 +642,7 @@ class PaymentSheetSnapshotTests: STPSnapshotTestCase {
641642
)
642643
presentPaymentSheet(darkMode: false)
643644
verify(paymentSheet.bottomSheetViewController.view!)
645+
UserDefaults.standard.removeObject(forKey: "FINANCIAL_CONNECTIONS_INSTANT_DEBITS_INCENTIVES")
644646
}
645647

646648
func testPaymentSheetSingleLPM() {
@@ -652,6 +654,7 @@ class PaymentSheetSnapshotTests: STPSnapshotTestCase {
652654
variables: [
653655
"<paymentMethods>": "\"cashapp\"",
654656
"<currency>": "\"usd\"",
657+
"<linkMode>": "null",
655658
]
656659
)
657660
}
@@ -678,6 +681,7 @@ class PaymentSheetSnapshotTests: STPSnapshotTestCase {
678681
variables: [
679682
"<paymentMethods>": "\"cashapp\"",
680683
"<currency>": "\"usd\"",
684+
"<linkMode>": "null",
681685
]
682686
)
683687
}

0 commit comments

Comments
 (0)