From 368148bf6f47df47fc658a1134110884695ff1d5 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 15 Apr 2026 16:01:03 -0400 Subject: [PATCH 01/15] pass endorsement code and answers in save session --- src/constants/endorsement-codes.js | 6 +++++ src/helpers/policy-vehicle-helper.js | 22 +++++++++++++++++++ .../policy-vehicles/policy-vehicles.vue | 7 +++++- src/store/index.js | 17 ++++++++++++-- 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/constants/endorsement-codes.js diff --git a/src/constants/endorsement-codes.js b/src/constants/endorsement-codes.js new file mode 100644 index 00000000..08649785 --- /dev/null +++ b/src/constants/endorsement-codes.js @@ -0,0 +1,6 @@ +const endorsementCodes = Object.freeze({ + EDUCATOR: '001', + PARKING_GUARD: '003' +}); + +export default endorsementCodes; \ No newline at end of file diff --git a/src/helpers/policy-vehicle-helper.js b/src/helpers/policy-vehicle-helper.js index 69a80e74..5f289e22 100644 --- a/src/helpers/policy-vehicle-helper.js +++ b/src/helpers/policy-vehicle-helper.js @@ -1,4 +1,5 @@ import endorsementOptions from '@/constants/endorsement-options'; +import endorsementCodes from '@/constants/endorsement-codes'; export function noCoverageForSelectedVehicle(vehicle) { return (vehicle?.coverages?.length ?? 0) === 0; @@ -18,6 +19,27 @@ export function endorsementsForSelectedVehicle(vehicle) { } return []; } +export function endorsementCodesForSelectedVehicle(vehicle) { + if (vehicle?.endorsements.length === 1) { + switch (true) { + case vehicle.endorsements.includes(endorsementOptions.EDUCATOR): + return endorsementCodes.EDUCATOR; + case vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD): + return endorsementCodes.PARKING_GUARD; + } + } + else if (vehicle?.endorsements?.length > 1) { + let codes = []; + if (vehicle.endorsements.includes(endorsementOptions.EDUCATOR)) { + codes.push(endorsementCodes.EDUCATOR); + } + if (vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD)) { + codes.push(endorsementCodes.PARKING_GUARD); + } + return codes.join(','); + } + return ""; +} export function repairWaivedForSelectedVehicle(vehicle) { return vehicle?.endorsements?.includes(endorsementOptions.REPAIR_WAIVED) ?? false; } diff --git a/src/layouts/policy-vehicles/policy-vehicles.vue b/src/layouts/policy-vehicles/policy-vehicles.vue index 019c0059..776a48a5 100644 --- a/src/layouts/policy-vehicles/policy-vehicles.vue +++ b/src/layouts/policy-vehicles/policy-vehicles.vue @@ -55,6 +55,7 @@ import { useMainStore } from '@/store/index.js'; import { deductibleForSelectedVehicle, endorsementsForSelectedVehicle, + endorsementCodesForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; @@ -132,6 +133,9 @@ export default { endorsementsForSelectedVehicle() { return endorsementsForSelectedVehicle(this.selectedPolicyVehicle); }, + endorsementCodesForSelectedVehicle() { + return endorsementCodesForSelectedVehicle(this.selectedPolicyVehicle); + }, repairWaivedForSelectedVehicle() { return repairWaivedForSelectedVehicle(this.selectedPolicyVehicle); } @@ -201,7 +205,8 @@ export default { noCoverage: this.noCoverageForSelectedVehicle, deductible: this.deductibleForSelectedVehicle, repairWaived: this.repairWaivedForSelectedVehicle, - endorsements: this.endorsementsForSelectedVehicle + endorsements: this.endorsementsForSelectedVehicle, + cvrgEndorsementCode: this.endorsementCodesForSelectedVehicle }); this.navigateForward(); } catch (e) { diff --git a/src/store/index.js b/src/store/index.js index 680561af..a43eec95 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import bailoutCode from '@/constants/bailoutCode'; import coverageStatuses from '@/constants/coverage-statuses'; import coverageType from '@/constants/coverage-type'; import damageLocationsSelected from '@/constants/damage-locations-selected'; +import endorsementOptions from '@/constants/endorsement-options'; import endpoints from '@/constants/endpoints'; import { experimentSettings, experimentTriggers, experimentUniverses } from '@/constants/experiments'; import partNumberStrings from '@/constants/part-number-strings'; @@ -17,7 +18,7 @@ import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourT import { getExperimentSettingValue, getFeatureTogglesPayloadObject } from '@/helpers/experiment-helper'; import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { - deductibleForSelectedVehicle, endorsementsForSelectedVehicle, + deductibleForSelectedVehicle, endorsementsForSelectedVehicle, endorsementCodesForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; @@ -28,6 +29,7 @@ import { isMobileDevice } from '@/helpers/useragent-helper'; import issPageValues from '@/router/router-constants/issPage-values'; import CoverageStatuses from '@/constants/coverage-statuses'; import { getNonFalseValuesOfPropertyInArrayOfObjects, sortArrayOfObjectsByPropertyValue } from '@/helpers/object-helper'; +import endorsementCodes from '@/constants/endorsement-codes'; const storeId = 'main'; @@ -109,6 +111,9 @@ export const getDefaultState = () => ({ vehicles: [], endorsements: [], endorsementQuestionAnswers: [], + cvrgEndorsementCode: null, + educatorEndorsementAnswer: null, + parkingGuardEndorsementAnswer: null, status: null, policyData: null }, @@ -1469,7 +1474,10 @@ export const useMainStore = defineStore({ currentDeductible: this.currentDeductible, OemEndorsement: this.hasOemEndorsement, noCoverage: this.isNoComp, - isItac: this.isITAC + isItac: this.isITAC, + cvrgEndorsementCode: policy.cvrgEndorsementCode, + educatorEndorsement: policy.educatorEndorsementAnswer, + parkingGuardEndorsement: policy.parkingGuardEndorsementAnswer }, customer: { address: { @@ -2071,6 +2079,7 @@ export const useMainStore = defineStore({ this.order.policy.deductible.replace = coverage.deductible; this.order.policy.deductible.repair = coverage?.repairWaived ?? false ? 0 : coverage.deductible; this.order.policy.endorsements = coverage?.endorsements; + this.order.policy.cvrgEndorsementCode = coverage?.cvrgEndorsementCode; this.order.originalDeductible.replace = this.order.policy.deductible.replace; this.order.currentDeductible.replace = this.order.policy.deductible.replace; @@ -2292,6 +2301,10 @@ export const useMainStore = defineStore({ updateEndorsementQuestionAnswers(answersArray) { this.order.policy.endorsementQuestionAnswers = answersArray; + const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); + const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); + this.order.policy.educatorEndorsementAnswer = educatorEndorsement ? educatorEndorsement.selectedAnswer : null; + this.order.policy.parkingGuardEndorsementAnswer = parkingGuardEndorsement ? parkingGuardEndorsement.selectedAnswer : null; }, updateIsRepair(isRepair) { From 34c7a84c86fa389e3c95c7a9a1ca90598fa70606 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 16 Apr 2026 09:04:51 -0400 Subject: [PATCH 02/15] unit tests --- src/helpers/policy-vehicle-helper.js | 2 +- src/layouts/policy-vehicles/policy-vehicles.spec.js | 9 ++++++--- src/store/store.spec.js | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/helpers/policy-vehicle-helper.js b/src/helpers/policy-vehicle-helper.js index 5f289e22..f2651670 100644 --- a/src/helpers/policy-vehicle-helper.js +++ b/src/helpers/policy-vehicle-helper.js @@ -20,7 +20,7 @@ export function endorsementsForSelectedVehicle(vehicle) { return []; } export function endorsementCodesForSelectedVehicle(vehicle) { - if (vehicle?.endorsements.length === 1) { + if (vehicle?.endorsements?.length === 1) { switch (true) { case vehicle.endorsements.includes(endorsementOptions.EDUCATOR): return endorsementCodes.EDUCATOR; diff --git a/src/layouts/policy-vehicles/policy-vehicles.spec.js b/src/layouts/policy-vehicles/policy-vehicles.spec.js index 176d4eb7..f144af63 100644 --- a/src/layouts/policy-vehicles/policy-vehicles.spec.js +++ b/src/layouts/policy-vehicles/policy-vehicles.spec.js @@ -125,7 +125,8 @@ describe('policy-vehicles.vue', () => { noCoverage: true, deductible: 0, repairWaived: false, - endorsements: [] + endorsements: [], + cvrgEndorsementCode: "" }; // Act @@ -180,7 +181,8 @@ describe('policy-vehicles.vue', () => { noCoverage: true, deductible: 0, repairWaived: false, - endorsements + endorsements, + cvrgEndorsementCode: "001" }; // Act @@ -233,7 +235,8 @@ describe('policy-vehicles.vue', () => { noCoverage: true, deductible: 0, repairWaived: false, - endorsements + endorsements, + cvrgEndorsementCode: "003" }; // Act diff --git a/src/store/store.spec.js b/src/store/store.spec.js index d6a29e43..5e988191 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -1518,7 +1518,7 @@ describe('Store', () => { }); describe('saveEndorsementQuestionAnswers method', () => { - it('method should update endorsement question data in store', () => { + it.skip('method should update endorsement question data in store', () => { // Arrange const questionNum = getRandomInt(1, 100); const questionText = getRandomString(50, 300); From 550950b8e5c7dc18b886788cb7773c21e88750cb Mon Sep 17 00:00:00 2001 From: katiekroell <100247286+katiekroell@users.noreply.github.com> Date: Thu, 16 Apr 2026 09:55:17 -0400 Subject: [PATCH 03/15] Update src/store/index.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/store/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index a43eec95..a23fa760 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1475,7 +1475,7 @@ export const useMainStore = defineStore({ OemEndorsement: this.hasOemEndorsement, noCoverage: this.isNoComp, isItac: this.isITAC, - cvrgEndorsementCode: policy.cvrgEndorsementCode, + cvrgEndorsementCode: policy.cvrgEndorsementCode ?? endorsementCodesForSelectedVehicle(vehicle), educatorEndorsement: policy.educatorEndorsementAnswer, parkingGuardEndorsement: policy.parkingGuardEndorsementAnswer }, From 68aae3702f9d6f0562e41fd561aeca54291a0737 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 16 Apr 2026 10:05:41 -0400 Subject: [PATCH 04/15] fixes --- src/store/index.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index a43eec95..fe9bf33a 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -18,7 +18,7 @@ import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourT import { getExperimentSettingValue, getFeatureTogglesPayloadObject } from '@/helpers/experiment-helper'; import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { - deductibleForSelectedVehicle, endorsementsForSelectedVehicle, endorsementCodesForSelectedVehicle, + deductibleForSelectedVehicle, endorsementsForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; @@ -29,7 +29,6 @@ import { isMobileDevice } from '@/helpers/useragent-helper'; import issPageValues from '@/router/router-constants/issPage-values'; import CoverageStatuses from '@/constants/coverage-statuses'; import { getNonFalseValuesOfPropertyInArrayOfObjects, sortArrayOfObjectsByPropertyValue } from '@/helpers/object-helper'; -import endorsementCodes from '@/constants/endorsement-codes'; const storeId = 'main'; @@ -2121,6 +2120,9 @@ export const useMainStore = defineStore({ this.order.policy.vehicles = []; this.order.policy.endorsements = []; this.order.policy.endorsementQuestionAnswers = []; + this.order.policy.cvrgEndorsementCode = null; + this.order.policy.educatorEndorsementAnswer = null; + this.order.policy.parkingGuardEndorsementAnswer = null; this.order.policy.policyData = null; this.order.policy.deductible.repair = null; this.order.policy.deductible.replace = null; @@ -2301,10 +2303,12 @@ export const useMainStore = defineStore({ updateEndorsementQuestionAnswers(answersArray) { this.order.policy.endorsementQuestionAnswers = answersArray; - const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); - const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); - this.order.policy.educatorEndorsementAnswer = educatorEndorsement ? educatorEndorsement.selectedAnswer : null; - this.order.policy.parkingGuardEndorsementAnswer = parkingGuardEndorsement ? parkingGuardEndorsement.selectedAnswer : null; + if (answersArray !== null) { + const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); + const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); + this.order.policy.educatorEndorsementAnswer = educatorEndorsement ? educatorEndorsement.selectedAnswer : null; + this.order.policy.parkingGuardEndorsementAnswer = parkingGuardEndorsement ? parkingGuardEndorsement.selectedAnswer : null; + } }, updateIsRepair(isRepair) { From 404c5470048807d963ab905ba81e29f3bac3c5b9 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 16 Apr 2026 10:33:49 -0400 Subject: [PATCH 05/15] add helper method back --- src/store/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index 2e87572b..e32e212f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -18,7 +18,7 @@ import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourT import { getExperimentSettingValue, getFeatureTogglesPayloadObject } from '@/helpers/experiment-helper'; import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { - deductibleForSelectedVehicle, endorsementsForSelectedVehicle, + deductibleForSelectedVehicle, endorsementsForSelectedVehicle, endorsementCodesForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; From 9fd92eb4cd898c6d94c941ac38b2b4070d0a204a Mon Sep 17 00:00:00 2001 From: Alex Humphries Date: Fri, 17 Apr 2026 10:36:26 -0400 Subject: [PATCH 06/15] INSR-8881: Ensure modal links don't end up with doubled listeners --- src/helpers/cms-content-helper.js | 5 +++-- src/layouts/coverage-statement/coverage-statement.vue | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index bf12c5c2..d2c3ce97 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -526,13 +526,13 @@ export function doesCopyContainTextLink(copy) { * * @param context */ -export function setupModalLinks(context) { +export function setupModalLinks(context, abortSignal = null) { context.$nextTick(() => { const elements = document.getElementsByClassName('modal-text'); for (const element of elements) { const target = element.getAttribute('modalTarget'); if (target) { - element.addEventListener('click', () => context.$refs[target].openModal()); + element.addEventListener('click', () => context.$refs[target].openModal(), { signal: abortSignal }); } } }); @@ -547,6 +547,7 @@ export function setupModalLink(context, desiredTarget) { context.$nextTick(() => { const element = document.querySelector(`[modalTarget=${desiredTarget}]`); if (element) { + element.removeEventListener('click', () => context.$refs[desiredTarget].openModal()); element.addEventListener('click', () => context.$refs[desiredTarget].openModal()); } }); diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 88a0ecb7..54e341ff 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -131,7 +131,6 @@ import recalModal from '@/iss-components/recal-modal/recal-modal.vue'; // Import Supporting Files import { fetchCmsContentForPage, - setupModalLink, setupModalLinks, processIfStatements } from '@/helpers/cms-content-helper.js'; @@ -231,7 +230,8 @@ export default { }, RECAL_MODAL_REF_NAME, CANCEL_CLAIM_REF_NAME, - OEM_ENDORSEMENT_REF_NAME + OEM_ENDORSEMENT_REF_NAME, + abortController: new AbortController() }; }, computed: { @@ -367,8 +367,9 @@ export default { watch: { nextStepsBody(newValue, oldValue) { if (newValue !== oldValue) { - setupModalLink(this, RECAL_MODAL_REF_NAME); - setupModalLink(this, OEM_ENDORSEMENT_REF_NAME); + this.abortController.abort(); + this.abortController = new AbortController(); + setupModalLinks(this, this.abortController.signal); } } }, @@ -376,7 +377,7 @@ export default { if (this.isPageLoading) { showIssLoadingModal(true); } - setupModalLinks(this); + setupModalLinks(this, this.abortController.signal); }, methods: { logEventsToGA() { From 191663258f082eeaa54b5586084ec20d4c0c9e4a Mon Sep 17 00:00:00 2001 From: Alex Humphries Date: Fri, 17 Apr 2026 10:47:02 -0400 Subject: [PATCH 07/15] INSR-8881.2: Handle null abort signal, remove now-unneeded code --- src/helpers/cms-content-helper.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index d2c3ce97..c8ddf306 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -532,7 +532,12 @@ export function setupModalLinks(context, abortSignal = null) { for (const element of elements) { const target = element.getAttribute('modalTarget'); if (target) { - element.addEventListener('click', () => context.$refs[target].openModal(), { signal: abortSignal }); + if (abortSignal) { + element.addEventListener('click', () => context.$refs[target].openModal(), { signal: abortSignal }); + } + else { + element.addEventListener('click', () => context.$refs[target].openModal()); + } } } }); @@ -547,7 +552,6 @@ export function setupModalLink(context, desiredTarget) { context.$nextTick(() => { const element = document.querySelector(`[modalTarget=${desiredTarget}]`); if (element) { - element.removeEventListener('click', () => context.$refs[desiredTarget].openModal()); element.addEventListener('click', () => context.$refs[desiredTarget].openModal()); } }); From 6c7750c74a433ce5d025e0eb770d8a82a9b8dede Mon Sep 17 00:00:00 2001 From: Alex Humphries Date: Fri, 17 Apr 2026 13:01:57 -0400 Subject: [PATCH 08/15] INSR-9260: Fix missing sentence in drop off appointment time text --- src/layouts/order-confirmation/order-confirmation.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index 063346f2..1a3b6db9 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -341,7 +341,7 @@ export default { appointmentTimeText() { const { startTime, endTime } = this.schedule; if (this.isDropOffAppointment) { - return 'Drop off before 9:30 AM'; + return 'Drop off by 9:30 AM. Pick-up time dependent on shop schedule'; } if (this.isInShopAppointment) { const formattedStartTime = get12HourTimeFormat(startTime); From 44a2b389881c51ac0969c2520fe4535c04674f87 Mon Sep 17 00:00:00 2001 From: Alex Humphries Date: Fri, 17 Apr 2026 13:08:01 -0400 Subject: [PATCH 09/15] INSR-9260: update test to match new text --- src/layouts/order-confirmation/order-confirmation.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/order-confirmation/order-confirmation.spec.js b/src/layouts/order-confirmation/order-confirmation.spec.js index 9438b038..aef28e10 100644 --- a/src/layouts/order-confirmation/order-confirmation.spec.js +++ b/src/layouts/order-confirmation/order-confirmation.spec.js @@ -441,7 +441,7 @@ describe('OrderConfirmation.vue', () => { const testValue = wrapper.vm.appointmentTimeText; // Assert - expect(testValue).toEqual('Drop off before 9:30 AM'); + expect(testValue).toEqual('Drop off by 9:30 AM. Pick-up time dependent on shop schedule'); }); test.each([ ['Your appointment is at 9:00 AM', '09:00', '10:00'], From 1a9e545730dfb8d3d61b3c4b8b7618190e5d0adf Mon Sep 17 00:00:00 2001 From: Alex Humphries Date: Fri, 17 Apr 2026 14:04:39 -0400 Subject: [PATCH 10/15] INSR-9260: Update snapshot --- .../__snapshots__/coverage-statement.spec.js.snap | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/layouts/coverage-statement/__snapshots__/coverage-statement.spec.js.snap b/src/layouts/coverage-statement/__snapshots__/coverage-statement.spec.js.snap index 52bab2ae..997f06bc 100644 --- a/src/layouts/coverage-statement/__snapshots__/coverage-statement.spec.js.snap +++ b/src/layouts/coverage-statement/__snapshots__/coverage-statement.spec.js.snap @@ -5,6 +5,11 @@ Object { "CANCEL_CLAIM_REF_NAME": "CancelClaimModal", "OEM_ENDORSEMENT_REF_NAME": "OEMModal", "RECAL_MODAL_REF_NAME": "RecalModal", + "abortController": AbortController { + Symbol(SameObject caches): Object { + "signal": AbortSignal {}, + }, + }, "baseServiceLineItems": Array [], "isPageLoading": true, "widget": Object { From 9684303b469b105b7f641691b6a0188e198b9eae Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 20 Apr 2026 09:45:11 -0400 Subject: [PATCH 11/15] rename constant file --- src/constants/endorsement-codes.js | 4 ++-- src/helpers/policy-vehicle-helper.js | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/constants/endorsement-codes.js b/src/constants/endorsement-codes.js index 08649785..222c90f8 100644 --- a/src/constants/endorsement-codes.js +++ b/src/constants/endorsement-codes.js @@ -1,6 +1,6 @@ -const endorsementCodes = Object.freeze({ +const endorsementCodes_LibertyMutual = Object.freeze({ EDUCATOR: '001', PARKING_GUARD: '003' }); -export default endorsementCodes; \ No newline at end of file +export default endorsementCodes_LibertyMutual; \ No newline at end of file diff --git a/src/helpers/policy-vehicle-helper.js b/src/helpers/policy-vehicle-helper.js index f2651670..fbd450d6 100644 --- a/src/helpers/policy-vehicle-helper.js +++ b/src/helpers/policy-vehicle-helper.js @@ -1,5 +1,5 @@ import endorsementOptions from '@/constants/endorsement-options'; -import endorsementCodes from '@/constants/endorsement-codes'; +import endorsementCodes_LibertyMutual from '@/constants/endorsement-codes'; export function noCoverageForSelectedVehicle(vehicle) { return (vehicle?.coverages?.length ?? 0) === 0; @@ -23,18 +23,18 @@ export function endorsementCodesForSelectedVehicle(vehicle) { if (vehicle?.endorsements?.length === 1) { switch (true) { case vehicle.endorsements.includes(endorsementOptions.EDUCATOR): - return endorsementCodes.EDUCATOR; + return endorsementCodes_LibertyMutual.EDUCATOR; case vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD): - return endorsementCodes.PARKING_GUARD; + return endorsementCodes_LibertyMutual.PARKING_GUARD; } } else if (vehicle?.endorsements?.length > 1) { let codes = []; if (vehicle.endorsements.includes(endorsementOptions.EDUCATOR)) { - codes.push(endorsementCodes.EDUCATOR); + codes.push(endorsementCodes_LibertyMutual.EDUCATOR); } if (vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD)) { - codes.push(endorsementCodes.PARKING_GUARD); + codes.push(endorsementCodes_LibertyMutual.PARKING_GUARD); } return codes.join(','); } From f262b05df168f41dd050a78e1f30c365ca8ec9e4 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 20 Apr 2026 10:44:22 -0400 Subject: [PATCH 12/15] refactor method, reuse existing array for answers --- src/helpers/policy-vehicle-helper.js | 27 ++++++++++----------------- src/store/index.js | 9 +-------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/helpers/policy-vehicle-helper.js b/src/helpers/policy-vehicle-helper.js index fbd450d6..783f210d 100644 --- a/src/helpers/policy-vehicle-helper.js +++ b/src/helpers/policy-vehicle-helper.js @@ -20,25 +20,18 @@ export function endorsementsForSelectedVehicle(vehicle) { return []; } export function endorsementCodesForSelectedVehicle(vehicle) { - if (vehicle?.endorsements?.length === 1) { - switch (true) { - case vehicle.endorsements.includes(endorsementOptions.EDUCATOR): - return endorsementCodes_LibertyMutual.EDUCATOR; - case vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD): - return endorsementCodes_LibertyMutual.PARKING_GUARD; - } + if (!Array.isArray(vehicle?.endorsements) || vehicle.endorsements.length === 0) { + return ''; } - else if (vehicle?.endorsements?.length > 1) { - let codes = []; - if (vehicle.endorsements.includes(endorsementOptions.EDUCATOR)) { - codes.push(endorsementCodes_LibertyMutual.EDUCATOR); - } - if (vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD)) { - codes.push(endorsementCodes_LibertyMutual.PARKING_GUARD); - } - return codes.join(','); + + let codes = []; + if (vehicle.endorsements.includes(endorsementOptions.EDUCATOR)) { + codes.push(endorsementCodes_LibertyMutual.EDUCATOR); } - return ""; + if (vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD)) { + codes.push(endorsementCodes_LibertyMutual.PARKING_GUARD); + } + return codes.join(','); } export function repairWaivedForSelectedVehicle(vehicle) { return vehicle?.endorsements?.includes(endorsementOptions.REPAIR_WAIVED) ?? false; diff --git a/src/store/index.js b/src/store/index.js index e32e212f..b021aa53 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -111,8 +111,6 @@ export const getDefaultState = () => ({ endorsements: [], endorsementQuestionAnswers: [], cvrgEndorsementCode: null, - educatorEndorsementAnswer: null, - parkingGuardEndorsementAnswer: null, status: null, policyData: null }, @@ -1475,8 +1473,7 @@ export const useMainStore = defineStore({ noCoverage: this.isNoComp, isItac: this.isITAC, cvrgEndorsementCode: policy.cvrgEndorsementCode ?? endorsementCodesForSelectedVehicle(vehicle), - educatorEndorsement: policy.educatorEndorsementAnswer, - parkingGuardEndorsement: policy.parkingGuardEndorsementAnswer + endorsementQuestionAnswers: policy.endorsementQuestionAnswers }, customer: { address: { @@ -2121,8 +2118,6 @@ export const useMainStore = defineStore({ this.order.policy.endorsements = []; this.order.policy.endorsementQuestionAnswers = []; this.order.policy.cvrgEndorsementCode = null; - this.order.policy.educatorEndorsementAnswer = null; - this.order.policy.parkingGuardEndorsementAnswer = null; this.order.policy.policyData = null; this.order.policy.deductible.repair = null; this.order.policy.deductible.replace = null; @@ -2306,8 +2301,6 @@ export const useMainStore = defineStore({ if (answersArray !== null) { const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); - this.order.policy.educatorEndorsementAnswer = educatorEndorsement ? educatorEndorsement.selectedAnswer : null; - this.order.policy.parkingGuardEndorsementAnswer = parkingGuardEndorsement ? parkingGuardEndorsement.selectedAnswer : null; } }, From 031049dceabe90408be91e531ba49b25b0c9c1e9 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Mon, 20 Apr 2026 11:25:41 -0400 Subject: [PATCH 13/15] add loader on continue --- src/layouts/service-packages/service-packages.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index 6c95e13b..1e378490 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -71,6 +71,7 @@ import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue' import contentGroupModal from '@/iss-components/content-group-modal/content-group-modal.vue'; import loadingModal from '@/iss-components/loading-modal/loading-modal.vue'; import settleAllPromises from '@/helpers/layout-helper'; +import showIssLoadingModal from '@/helpers/loading-modal-helper'; import { useMainStore } from '@/store'; import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import { Form } from 'vee-validate'; @@ -227,6 +228,7 @@ export default { this.selectedPackageTier = packageTier; }, forwardButtonAction() { + showIssLoadingModal(true); const parts = { vaps: this.selectedVaps }; From 73a13c6f9bdfb4d5fb63b32fb5d432808735a1b8 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 20 Apr 2026 14:31:29 -0400 Subject: [PATCH 14/15] remove outdated stuff --- src/store/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index b021aa53..de4e1d4a 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2298,10 +2298,6 @@ export const useMainStore = defineStore({ updateEndorsementQuestionAnswers(answersArray) { this.order.policy.endorsementQuestionAnswers = answersArray; - if (answersArray !== null) { - const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); - const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); - } }, updateIsRepair(isRepair) { From d8310dfad8283019324a53a33f0fa5dbffe1a9ab Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 20 Apr 2026 14:34:21 -0400 Subject: [PATCH 15/15] unskip test --- src/store/store.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 5e988191..d6a29e43 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -1518,7 +1518,7 @@ describe('Store', () => { }); describe('saveEndorsementQuestionAnswers method', () => { - it.skip('method should update endorsement question data in store', () => { + it('method should update endorsement question data in store', () => { // Arrange const questionNum = getRandomInt(1, 100); const questionText = getRandomString(50, 300);