Skip to content

Commit 95bebc8

Browse files
[SFI-1536] Extend L2/L3 data support to applepay and googlepay payment methods (#1502)
* feat: extend L2/L3 data support to applepay and googlepay payment methods * feat: add paywithgoogle to L2/L3 data supported payment methods
1 parent f8dde35 commit 95bebc8

3 files changed

Lines changed: 91 additions & 1 deletion

File tree

src/cartridges/int_adyen_SFRA/cartridge/adyen/config/constants.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ module.exports = {
6464
'clearpay',
6565
],
6666

67+
L23_PAYMENT_METHODS: ['applepay', 'googlepay', 'paywithgoogle', 'scheme'],
68+
6769
SERVICE: {
6870
PAYMENT: 'AdyenPayment',
6971
PAYMENT_LINKS: 'AdyenPaymentLinks',

src/cartridges/int_adyen_SFRA/cartridge/adyen/scripts/payments/__tests__/adyenCheckout.test.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
const adyenCheckout = require('../adyenCheckout');
22
const Logger = require('../../../../../../../../jest/__mocks__/dw/system/Logger');
3+
const AdyenConfigs = require('*/cartridge/adyen/utils/adyenConfigs');
4+
const AdyenHelper = require('*/cartridge/adyen/utils/adyenHelper');
5+
const adyenLevelTwoThreeData = require('*/cartridge/adyen/scripts/payments/adyenLevelTwoThreeData');
36

47
describe('AdyenCheckout', () => {
58
it('should not error when cached gift card amount and actual amount match', () => {
@@ -95,4 +98,87 @@ describe('AdyenCheckout', () => {
9598
const testFn = () => {adyenCheckout.createPaymentRequest(args)};
9699
expect(testFn).toThrow("Cart has been edited after applying a gift card");
97100
})
101+
102+
describe('L2/3 Data filtering with L23_PAYMENT_METHODS', () => {
103+
let getLineItemsSpy;
104+
const l23MockData = { 'enhancedSchemeData.totalTaxAmount': 10 };
105+
106+
function createArgs() {
107+
return {
108+
Order: {
109+
custom: {},
110+
setPaymentStatus: jest.fn(),
111+
setExportStatus: jest.fn(),
112+
getOrderNo: jest.fn(),
113+
getOrderToken: jest.fn(),
114+
getCustomerEmail: jest.fn(),
115+
getBillingAddress: jest.fn(),
116+
getDefaultShipment: jest.fn(),
117+
paymentInstrument: {
118+
custom: {
119+
adyenPaymentData: "{}",
120+
},
121+
paymentTransaction: {
122+
amount: {
123+
value: 1000,
124+
currencyCode: "EUR"
125+
}
126+
}
127+
},
128+
},
129+
};
130+
}
131+
132+
beforeEach(() => {
133+
getLineItemsSpy = jest.spyOn(adyenLevelTwoThreeData, 'getLineItems')
134+
.mockReturnValue(l23MockData);
135+
AdyenConfigs.getAdyenLevel23DataEnabled.mockReturnValue(true);
136+
});
137+
138+
afterEach(() => {
139+
getLineItemsSpy.mockRestore();
140+
AdyenConfigs.getAdyenLevel23DataEnabled.mockReturnValue(false);
141+
AdyenHelper.createAdyenRequestObject.mockReturnValue({
142+
paymentMethod: { type: 'scheme' },
143+
});
144+
});
145+
146+
it('should add L2/3 data for scheme payment method', () => {
147+
AdyenHelper.createAdyenRequestObject.mockReturnValue({
148+
paymentMethod: { type: 'scheme' },
149+
});
150+
adyenCheckout.createPaymentRequest(createArgs());
151+
expect(getLineItemsSpy).toHaveBeenCalled();
152+
});
153+
154+
it('should add L2/3 data for applepay payment method', () => {
155+
AdyenHelper.createAdyenRequestObject.mockReturnValue({
156+
paymentMethod: { type: 'applepay' },
157+
});
158+
adyenCheckout.createPaymentRequest(createArgs());
159+
expect(getLineItemsSpy).toHaveBeenCalled();
160+
});
161+
162+
it('should add L2/3 data for googlepay payment method', () => {
163+
AdyenHelper.createAdyenRequestObject.mockReturnValue({
164+
paymentMethod: { type: 'googlepay' },
165+
});
166+
adyenCheckout.createPaymentRequest(createArgs());
167+
expect(getLineItemsSpy).toHaveBeenCalled();
168+
});
169+
170+
it('should not add L2/3 data for non-L23 payment method', () => {
171+
AdyenHelper.createAdyenRequestObject.mockReturnValue({
172+
paymentMethod: { type: 'ideal' },
173+
});
174+
adyenCheckout.createPaymentRequest(createArgs());
175+
expect(getLineItemsSpy).not.toHaveBeenCalled();
176+
});
177+
178+
it('should not add L2/3 data when Level23Data is disabled', () => {
179+
AdyenConfigs.getAdyenLevel23DataEnabled.mockReturnValue(false);
180+
adyenCheckout.createPaymentRequest(createArgs());
181+
expect(getLineItemsSpy).not.toHaveBeenCalled();
182+
});
183+
})
98184
})

src/cartridges/int_adyen_SFRA/cartridge/adyen/scripts/payments/adyenCheckout.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,9 @@ function createPaymentRequest(args) {
163163
// L2/3 Data
164164
if (
165165
AdyenConfigs.getAdyenLevel23DataEnabled() &&
166-
paymentMethodType.indexOf('scheme') > -1
166+
constants.L23_PAYMENT_METHODS.some(
167+
(pm) => paymentMethodType.indexOf(pm) > -1,
168+
)
167169
) {
168170
paymentRequest.additionalData = {
169171
...paymentRequest.additionalData,

0 commit comments

Comments
 (0)