From f8e4e2f7d48accf9bb520655f16c2a69bd219243 Mon Sep 17 00:00:00 2001 From: Josh Dassinger Date: Tue, 12 Mar 2024 13:07:29 -0500 Subject: [PATCH] SSR-1101 Enable Paypal --- src/constants/query-strings.js | 1 + src/helpers/order-helper.js | 10 ++-- src/layouts/payment-return/payment-return.vue | 1 + src/store/index.js | 9 ++-- src/store/store.spec.js | 47 ++++++++++++------- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/src/constants/query-strings.js b/src/constants/query-strings.js index 576d1e5b..81d5ba7d 100644 --- a/src/constants/query-strings.js +++ b/src/constants/query-strings.js @@ -9,6 +9,7 @@ const queryStrings = Object.freeze({ CARD_TYPE: 'sgcardtype', DISPLAY_PAY_IN_ADVANCE_ALERT: 'displayPayInAdvanceAlert', ERROR: 'error', + TOKEN: 'token', LAST_FOUR: 'last_four', REFERENCE_NUMBER: 'req_reference_number', REFERRAL_SEQ_NUM: 'referralseqnum', diff --git a/src/helpers/order-helper.js b/src/helpers/order-helper.js index 33e7d3c4..8daf4b36 100644 --- a/src/helpers/order-helper.js +++ b/src/helpers/order-helper.js @@ -4,8 +4,8 @@ import { updateOrCreateISSCookie } from '@/helpers/cookie-helper'; /* Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing */ -async function saveSessionHelper(store) { - const savedSessionInfo = await store.saveSession(); +async function saveSessionHelper(store, options) { + const savedSessionInfo = await store.saveSession(options); if (savedSessionInfo) { store.setSaveSessionInfo(savedSessionInfo.data); } @@ -17,11 +17,11 @@ async function saveSessionHelper(store) { This will also set Referral information in the store after saving, and then update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue */ -export async function saveSession({ shouldAwaitSaveSessionQueue = false }) { +export async function saveSession({ shouldAwaitSaveSessionQueue = false, submitAfterSave = false }) { const store = useMainStore(); const saveSessionPromise = store.applicationUser.saveSessionPromise - ? store.applicationUser.saveSessionPromise.then(() => saveSessionHelper(store)) - : saveSessionHelper(store); + ? store.applicationUser.saveSessionPromise.then(() => saveSessionHelper(store, { submitAfterSave })) + : saveSessionHelper(store, { submitAfterSave }); store.setSaveSessionPromise(saveSessionPromise); diff --git a/src/layouts/payment-return/payment-return.vue b/src/layouts/payment-return/payment-return.vue index 8e5d3de6..4a29f2ea 100644 --- a/src/layouts/payment-return/payment-return.vue +++ b/src/layouts/payment-return/payment-return.vue @@ -74,6 +74,7 @@ export default { await this.processCreditCardResponse(); break; case paymentMethods.PAYPAL: + await this.processPaypalResponse(); break; default: console.log(`Unknown pay in advance type: ${payInAdvanceType}`); diff --git a/src/store/index.js b/src/store/index.js index 7f0a595b..840994a5 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1145,7 +1145,7 @@ export const useMainStore = defineStore({ this.applicationUser.crmCustomerId = response.crmCustomerId.toString(); }, - saveSession() { + saveSession(options) { const { vehicle, damage, policy, customer, contactInfo, payment, lineItems, serviceLocation, schedule } = this.order; @@ -1233,7 +1233,9 @@ export const useMainStore = defineStore({ coverageStatus: payment.insuranceCoverage?.coverageStatus, claimNumber: payment.insuranceCoverage?.claimNumber }, - parentAccountNumber: this.issConfig.parentAccountNumber + parentAccountNumber: this.issConfig.parentAccountNumber, + paypalToken: payment.paypalToken, + isPaypal: payment.payInAdvanceType === paymentMethods.PAYPAL }, serviceLocation: { address: { @@ -1274,7 +1276,8 @@ export const useMainStore = defineStore({ referralSequenceNumber: this.order.referralSequenceNumber, eon: this.order.eon, submitToMainframe: !!this.order.referralNumber, - loadedFromDupeCheck + loadedFromDupeCheck, + submitAfterSave: !!options.submitAfterSave }, additionalSuccessEventDataHandler: () => `Email provided: ${customer.emailAddress ? 'true' : 'false'}` diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 3a44c37e..2faa74f8 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -503,7 +503,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -517,7 +517,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response)); // Act - const result = store.saveSession(); + const result = store.saveSession({}); // Asserts await expect(result).resolves.toBe(response); @@ -537,7 +537,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -570,7 +570,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -612,7 +612,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -659,7 +659,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -708,7 +708,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -742,7 +742,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -769,7 +769,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -802,7 +802,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -838,7 +838,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -861,7 +861,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -875,7 +875,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Assert expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -888,7 +888,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -904,7 +904,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -927,7 +927,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act - await store.saveSession(); + await store.saveSession({}); // Asserts expect(globalMethods.callHttpClient).toHaveBeenCalledWith(expect.objectContaining({ @@ -947,7 +947,7 @@ describe('Store', () => { globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(error)); // Act - await store.saveSession().catch((e) => { + await store.saveSession({}).catch((e) => { expect(e).toEqual(error); }); @@ -1887,4 +1887,17 @@ describe('Store', () => { expect(store.order.payment.payInAdvanceType).toEqual(paymentMethod); }); }); + + describe('updatePaypalToken method', () => { + it('paypalToken is valid when set', () => { + // Arrange + const paypalToken = getRandomString(6, 6); + + // Act + store.updatePaypalToken(paypalToken); + + // Assert + expect(store.order.payment.paypalToken).toEqual(paypalToken); + }); + }); });