diff --git a/src/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.ts b/src/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.ts index 93a1d07..0f2d015 100644 --- a/src/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.ts +++ b/src/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.ts @@ -15,7 +15,8 @@ import { setTaxes, estimateShippingLines, estimateTaxes, - getOrderInitialData + getOrderInitialData, + changeShippingLine } from '@boldcommerce/checkout-frontend-library'; export async function ppcpOnShippingContactSelectedApple(event: ApplePayShippingContactSelectedEvent): Promise { @@ -50,6 +51,11 @@ export async function ppcpOnShippingContactSelectedApple(event: ApplePayShipping let shippingResponseSuccess = true; if (rsaEnabled) { + const {selected_shipping: selectedShipping, available_shipping_lines: shippingLines} = getShipping(); + if (!selectedShipping && shippingLines.length > 0) { + await changeShippingLine(shippingLines[0].id, API_RETRY); + } + await getShippingLines(API_RETRY); taxResponse = await estimateTaxes(address, API_RETRY); } else { const shippingLinesResponse = await getShippingLines(API_RETRY); diff --git a/tests/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.test.ts b/tests/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.test.ts index a5a5d34..d2b1c0f 100644 --- a/tests/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.test.ts +++ b/tests/paypal/ppcp_apple/ppcpOnShippingContactSelectedApple.test.ts @@ -16,7 +16,7 @@ import { setTaxes, estimateTaxes, estimateShippingLines, - getOrderInitialData + getOrderInitialData, IShipping } from '@boldcommerce/checkout-frontend-library'; import { addressesMock, @@ -127,6 +127,14 @@ describe('testing ppcpOnShippingContactSelectedApple function',() => { newShippingMethods: shippingMethodsMock, newTotal: {amount: '100.00', label: 'Total'} }; + + getShippingMock.mockReturnValueOnce( + {...shippingMock, + selected_shipping: null, + available_shipping_lines: [ + {id: '1', description: 'option'} + ]} as unknown as IShipping + ); orderInitialDataMock.general_settings.checkout_process.rsa_enabled = true; getOrderInitialDataMock.mockReturnValue(orderInitialDataMock); @@ -142,7 +150,7 @@ describe('testing ppcpOnShippingContactSelectedApple function',() => { expect(estimateTaxesMock).toBeCalledWith(addressesMock.shipping, API_RETRY); expect(getApplicationStateMock).toBeCalledTimes(1); expect(getPaymentRequestDisplayItemsMock).toBeCalledTimes(1); - expect(getShippingMock).toBeCalledTimes(1); + expect(getShippingMock).toBeCalledTimes(2); expect(applePaySessionCompleteShippingContactSelection).toBeCalledTimes(1); expect(applePaySessionCompleteShippingContactSelection).toBeCalledWith(expectedCompleteParam); });