@@ -10,44 +10,21 @@ import XCTest
1010
1111final 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 ,
0 commit comments