From 73bf00cdd59c1053e2df9548f55934772745ab3e Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Fri, 19 Jan 2024 11:56:52 -0500 Subject: [PATCH 1/5] Fixing vehicle damage lines --- .../damage-review-content-generator.js | 71 ++++++++++++ .../damage-review/damage-review.vue | 109 +++--------------- .../tpa-submit/review-block/review-block.vue | 4 +- src/layouts/tpa-submit/tpa-submit.vue | 43 +++++-- src/store/index.js | 2 +- 5 files changed, 127 insertions(+), 102 deletions(-) create mode 100644 src/helpers/damage-review-content-generator.js diff --git a/src/helpers/damage-review-content-generator.js b/src/helpers/damage-review-content-generator.js new file mode 100644 index 00000000..a6d8f7b5 --- /dev/null +++ b/src/helpers/damage-review-content-generator.js @@ -0,0 +1,71 @@ +import damageLocationsSelected from '@/constants/damage-locations-selected.js'; + +function getLocationAnswer(damageLocation, locationAnswers) { + return locationAnswers?.find((answer) => answer.Name === damageLocation); +} + +function getGlassPieces(damageLocation, glassToReplace) { + return glassToReplace?.filter((item) => item.glassLocation === damageLocation); +} + +function getWindshieldCopy(answerContent, glassToReplace, isRepair) { + const windshieldPieces = getGlassPieces(damageLocationsSelected.WINDSHIELD, glassToReplace); + return isRepair || !!windshieldPieces?.length ? [answerContent?.Text] : []; +} + +function getRearCopy(answerContent, glassToReplace) { + const rearPieces = getGlassPieces(damageLocationsSelected.REAR, glassToReplace); + return rearPieces?.length ? [answerContent?.Text] : []; +} + +function generateBulletedListFromAnswers(answers) { + const items = answers.map((answer) => `
  • ${answer.Text}
  • `); + return ``; +} + +function getSideCopy(location, locationAnswers, damageAnswers, glassToReplace) { + const sideItems = getGlassPieces(location, glassToReplace); + const damageAnswersOnOrder = damageAnswers?.filter((answer) => + sideItems?.some((glassPiece) => answer.Name === glassPiece.glassName)); + + return sideItems?.length + ? [ + locationAnswers?.Text, + generateBulletedListFromAnswers(damageAnswersOnOrder) + ] + : []; +} + +function getDamageDisplayContent( + locationAnswers, + driverSideDamageAnswers, + passengerSideDamageAnswers, + glassToReplace, + isRepair +) { + return [ + ...getWindshieldCopy( + getLocationAnswer(damageLocationsSelected.WINDSHIELD, locationAnswers), + glassToReplace, + isRepair + ), + ...getSideCopy( + damageLocationsSelected.DRIVER, + getLocationAnswer(damageLocationsSelected.DRIVER, locationAnswers), + driverSideDamageAnswers, + glassToReplace + ), + ...getSideCopy( + damageLocationsSelected.PASSENGER, + getLocationAnswer(damageLocationsSelected.PASSENGER, locationAnswers), + passengerSideDamageAnswers, + glassToReplace + ), + ...getRearCopy( + getLocationAnswer(damageLocationsSelected.REAR, locationAnswers), + glassToReplace + ) + ]; +} + +export { getDamageDisplayContent, getLocationAnswer }; diff --git a/src/layouts/review-page/review-sections/damage-review/damage-review.vue b/src/layouts/review-page/review-sections/damage-review/damage-review.vue index 4e0b0878..a2e4a2a3 100644 --- a/src/layouts/review-page/review-sections/damage-review/damage-review.vue +++ b/src/layouts/review-page/review-sections/damage-review/damage-review.vue @@ -9,6 +9,8 @@ diff --git a/src/layouts/tpa-submit/review-block/review-block.vue b/src/layouts/tpa-submit/review-block/review-block.vue index 5d13e48f..4f5af710 100644 --- a/src/layouts/tpa-submit/review-block/review-block.vue +++ b/src/layouts/tpa-submit/review-block/review-block.vue @@ -21,8 +21,8 @@

    - {{ line }} + class="small review-block__body--line" + v-html="line">

    diff --git a/src/layouts/tpa-submit/tpa-submit.vue b/src/layouts/tpa-submit/tpa-submit.vue index 1ba7f98a..6a0afbbf 100644 --- a/src/layouts/tpa-submit/tpa-submit.vue +++ b/src/layouts/tpa-submit/tpa-submit.vue @@ -78,7 +78,9 @@ :customText="orderDetailsBody" :marginTopSizeOverride="4" class="mb-4 px-4 small text-color--darker-gray" /> - + this.navigate(scenario) }; }, forwardButtonAction() { this.navigate(this.navigationScenarios.CLICKED_FORWARD); }, - getNavigateByScenarioMethod(scenario) { - return () => this.navigate(scenario); - }, navigate(scenario) { this.$router.navigate(scenario, this.$route); }, @@ -255,12 +276,18 @@ export default { return null; } }, + getAnswersNullSafe(widgetName) { + const rawAnswers = this.getCmsContent(widgetName, 'Answers'); + return rawAnswers || []; + }, processIfStatements, getStringWithCustomValues, toDisplayPhoneNumber, toTitleCase, formatAddress, - formatAmountInDollars + formatAmountInDollars, + getDamageDisplayContent, + getLocationAnswer } }; diff --git a/src/store/index.js b/src/store/index.js index 0249b80c..facfa026 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -13,7 +13,6 @@ import damageLocationsSelected from '@/constants/damage-locations-selected'; import coverageStatuses from '@/constants/coverage-statuses'; import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from '@/constants/schedule-constants'; import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourTime } from '@/helpers/date-helper'; -// import endorsementOptions from '@/constants/endorsement-options'; const storeId = 'main'; @@ -220,6 +219,7 @@ export const useMainStore = defineStore({ lineItems: (state) => state.order.lineItems, payment: (state) => state.order.payment, policy: (state) => state.order.policy, + hasExactlyOneChip: () => state.order.damage.numberOfChips === 1, hasAnyNonWindshieldGlassParts: (s) => !s.order.policy.isDamageGlassOnly, isMobileAppointment: (state) => state.order.serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE || state.order.serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP, From 002ef3726d29c9c4d761d35e16593b4e520b51eb Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Mon, 22 Jan 2024 10:45:08 -0500 Subject: [PATCH 2/5] Removing unnecessary methods --- .../__snapshots__/tpa-submit.spec.js.snap | 1 + src/layouts/tpa-submit/tpa-submit.spec.js | 42 ++++++++++--------- src/layouts/tpa-submit/tpa-submit.vue | 31 +++++--------- 3 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/layouts/tpa-submit/__snapshots__/tpa-submit.spec.js.snap b/src/layouts/tpa-submit/__snapshots__/tpa-submit.spec.js.snap index 10ea690d..48eedef7 100644 --- a/src/layouts/tpa-submit/__snapshots__/tpa-submit.spec.js.snap +++ b/src/layouts/tpa-submit/__snapshots__/tpa-submit.spec.js.snap @@ -8,6 +8,7 @@ Object { }, "sections": Array [], "widget": Object { + "damageLocations": "DamageLocationsWidget", "footer": "SiteFooterWidget", "orderDetails": "OrderDetailsContent", "serviceSummary": "ServiceSummaryContent", diff --git a/src/layouts/tpa-submit/tpa-submit.spec.js b/src/layouts/tpa-submit/tpa-submit.spec.js index 7b326679..76edc8c8 100644 --- a/src/layouts/tpa-submit/tpa-submit.spec.js +++ b/src/layouts/tpa-submit/tpa-submit.spec.js @@ -9,6 +9,7 @@ import { useMainStore } from '@/store'; import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import settleAllPromises from '@/helpers/layout-helper.js'; import widgetFields from '@/constants/cms-widget-fields.js'; +import { toTitleCase, formatAddress, toDisplayPhoneNumber } from '@/helpers/text-helper.js'; // Mock fetchCmsContentForPage jest.mock('@/helpers/cms-content-helper', () => ({ @@ -57,6 +58,11 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRu return { wrapper }; } +beforeEach(() => { + formatAddress.mockClear(); + toDisplayPhoneNumber.mockClear(); +}); + describe('tpa-submit', () => { test('returns the initial data', () => { // Arrange @@ -337,11 +343,12 @@ describe('tpa-submit', () => { expect(vehicleSection.lines).toStrictEqual(expectedLines); } ); + // TODO update because this case is now much more complicated test.each([ - ['Apple sauce', 'Apple sauce'], - ['', ''], - ['', undefined], - ['', null] + ['Apple sauce', 'Apple sauce']// , + // ['', ''], + // ['', undefined], + // ['', null] ])( 'damage line is %p when store damage is %p', async (damageLine, storeDamage) => { @@ -386,15 +393,12 @@ describe('tpa-submit', () => { const preferredShopSection = wrapper.vm.sections[preferredShopSectionIndex]; expect(preferredShopSection.lines.length).toBe(3); }); - test.each([ - ['some value', 'some value'], - ['', ''], - ['', null], - ['', undefined] - ])('first line is %p when company name is %p', async (line, companyName) => { + test('first line is value returned from toTitleCase method', async () => { // Arrange - const initialData = { companyName }; + const initialData = { companyName: 'some value' }; const { wrapper } = getMountedComponent({}, initialData); + const expectedName = 'some expected name'; + toTitleCase.mockImplementationOnce(() => expectedName); const preferredShopSectionIndex = 2; // Act @@ -407,7 +411,7 @@ describe('tpa-submit', () => { // Assert const preferredShopSection = wrapper.vm.sections[preferredShopSectionIndex]; - expect(preferredShopSection.lines[0]).toBe(line); + expect(preferredShopSection.lines[0]).toBe(expectedName); }); test('second line is expected and formatAddress called', async () => { // Arrange @@ -426,7 +430,7 @@ describe('tpa-submit', () => { }; const { wrapper } = getMountedComponent(initialStore); const line = 'some returned line'; - wrapper.vm.formatAddress = jest.fn().mockImplementationOnce(() => line); + formatAddress.mockImplementationOnce(() => line); const preferredShopSectionIndex = 2; // Act @@ -440,8 +444,8 @@ describe('tpa-submit', () => { // Assert const preferredShopSection = wrapper.vm.sections[preferredShopSectionIndex]; expect(preferredShopSection.lines[1]).toBe(line); - expect(wrapper.vm.formatAddress).toHaveBeenCalledTimes(1); - expect(wrapper.vm.formatAddress).toHaveBeenCalledWith( + expect(formatAddress).toHaveBeenCalledTimes(1); + expect(formatAddress).toHaveBeenCalledWith( address.streetAddress, null, address.city, @@ -461,7 +465,7 @@ describe('tpa-submit', () => { }; const { wrapper } = getMountedComponent(initialStore); const expectedLine = 'returned from to display phone num'; - wrapper.vm.toDisplayPhoneNumber = jest.fn().mockImplementationOnce(() => expectedLine); + toDisplayPhoneNumber.mockImplementationOnce(() => expectedLine); const preferredShopSectionIndex = 2; // Act @@ -475,7 +479,7 @@ describe('tpa-submit', () => { // Assert const preferredShopSection = wrapper.vm.sections[preferredShopSectionIndex]; expect(preferredShopSection.lines[2]).toBe(expectedLine); - expect(wrapper.vm.toDisplayPhoneNumber).toHaveBeenCalledWith(phoneNumber); + expect(toDisplayPhoneNumber).toHaveBeenCalledWith(phoneNumber); }); }); test('contact info section has expected content', async () => { @@ -498,7 +502,7 @@ describe('tpa-submit', () => { const expectedLine1 = 'Jones Eddison'; const expectedLine2 = emailAddress; const expectedLine3 = 'some value returned'; - wrapper.vm.toDisplayPhoneNumber = jest.fn().mockImplementation((number) => (number === phoneNumber ? expectedLine3 : '')); + toDisplayPhoneNumber.mockImplementation((number) => (number === phoneNumber ? expectedLine3 : '')); const contactInfoSectionIndex = 3; // Act @@ -514,7 +518,7 @@ describe('tpa-submit', () => { expect(contactInfoSection.lines[0]).toBe(expectedLine1); expect(contactInfoSection.lines[1]).toBe(expectedLine2); expect(contactInfoSection.lines[2]).toBe(expectedLine3); - expect(wrapper.vm.toDisplayPhoneNumber).toHaveBeenCalledWith(phoneNumber); + expect(toDisplayPhoneNumber).toHaveBeenCalledWith(phoneNumber); }); }); describe('computed', () => { diff --git a/src/layouts/tpa-submit/tpa-submit.vue b/src/layouts/tpa-submit/tpa-submit.vue index 6a0afbbf..8a241e05 100644 --- a/src/layouts/tpa-submit/tpa-submit.vue +++ b/src/layouts/tpa-submit/tpa-submit.vue @@ -171,7 +171,7 @@ export default { }, subHeaderBodyTwo() { const cmsContent = this.getCmsContent(this.widget.siteSubHeader, widgetFields.CONTENT_GROUP_WIDGET.BODY_TEXT_2); - return this.getStringWithCustomValues(cmsContent, this.customValueMap); + return getStringWithCustomValues(cmsContent, this.customValueMap); }, serviceSummaryText() { return this.getCmsContent(this.widget.serviceSummary, widgetFields.TEXT_BLOCK_WIDGET.TEXT); @@ -181,7 +181,7 @@ export default { }, orderDetailsBody() { const orderDetailsBodyText = this.getCmsContent(this.widget.orderDetails, widgetFields.CONTENT_GROUP_WIDGET.BODY_TEXT); - return this.processIfStatements(orderDetailsBodyText, 'custom', this.getCustomValueFromString); + return processIfStatements(orderDetailsBodyText, 'custom', this.getCustomValueFromString); }, forwardButtonText() { return this.getCmsContent(this.widget.footer, widgetFields.FOOTER_WIDGET.FORWARD_BUTTON_TEXT); @@ -193,7 +193,7 @@ export default { return useMainStore().order.currentDeductible; }, deductibleBoxValue() { - return this.isVerified ? this.formatAmountInDollars(this.currentDeductible) : VERIFYING_COVERAGE; + return this.isVerified ? formatAmountInDollars(this.currentDeductible) : VERIFYING_COVERAGE; }, getVehicleLines() { const { year, make, model } = useMainStore().order.vehicle; @@ -206,17 +206,16 @@ export default { return this.getAnswersNullSafe(this.widget.damageLocations); }, driverSideDamageAnswers() { - const answerContent = this.getLocationAnswer(damageLocationsSelected.DRIVER, this.locationAnswers); + const answerContent = getLocationAnswer(damageLocationsSelected.DRIVER, this.locationAnswers); return this.getAnswersNullSafe(answerContent?.SubWidgetName); }, passengerSideDamageAnswers() { - const answerContent = this.getLocationAnswer(damageLocationsSelected.PASSENGER, this.locationAnswers); + const answerContent = getLocationAnswer(damageLocationsSelected.PASSENGER, this.locationAnswers); return this.getAnswersNullSafe(answerContent?.SubWidgetName); }, - // TODO finish getDamageLines() { const { glassToReplace, isRepair } = useMainStore().order.damage; - return this.getDamageDisplayContent( + return getDamageDisplayContent( this.locationAnswers, this.driverSideDamageAnswers, this.passengerSideDamageAnswers, @@ -227,16 +226,16 @@ export default { getPreferredShopLines() { const { phoneNumber, address } = useMainStore().order.serviceLocation.provider; const { streetAddress, city, state, zipCode } = address; - const displayAddress = this.formatAddress(streetAddress, null, city, state, zipCode); - const displayPhoneNumber = this.toDisplayPhoneNumber(phoneNumber); - return [this.toTitleCase(this.companyName ?? ''), displayAddress, displayPhoneNumber]; + const displayAddress = formatAddress(streetAddress, null, city, state, zipCode); + const displayPhoneNumber = toDisplayPhoneNumber(phoneNumber); + return [toTitleCase(this.companyName ?? ''), displayAddress, displayPhoneNumber]; }, getContactInfoLines() { const { firstName, lastName, emailAddress, phoneNumber } = useMainStore().contactInfo; return [ `${firstName} ${lastName}`, emailAddress ?? '', - this.toDisplayPhoneNumber(phoneNumber) + toDisplayPhoneNumber(phoneNumber) ]; } }, @@ -279,15 +278,7 @@ export default { getAnswersNullSafe(widgetName) { const rawAnswers = this.getCmsContent(widgetName, 'Answers'); return rawAnswers || []; - }, - processIfStatements, - getStringWithCustomValues, - toDisplayPhoneNumber, - toTitleCase, - formatAddress, - formatAmountInDollars, - getDamageDisplayContent, - getLocationAnswer + } } }; From 5121c70bcca9efc2cac5e8519ba21697e5129e18 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Mon, 22 Jan 2024 11:12:00 -0500 Subject: [PATCH 3/5] Updating tpa-submit tests --- src/layouts/tpa-submit/tpa-submit.spec.js | 71 +++++++++++++---------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/src/layouts/tpa-submit/tpa-submit.spec.js b/src/layouts/tpa-submit/tpa-submit.spec.js index 76edc8c8..50b01bc9 100644 --- a/src/layouts/tpa-submit/tpa-submit.spec.js +++ b/src/layouts/tpa-submit/tpa-submit.spec.js @@ -10,6 +10,7 @@ import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import settleAllPromises from '@/helpers/layout-helper.js'; import widgetFields from '@/constants/cms-widget-fields.js'; import { toTitleCase, formatAddress, toDisplayPhoneNumber } from '@/helpers/text-helper.js'; +import { getDamageDisplayContent } from '@/helpers/damage-review-content-generator.js'; // Mock fetchCmsContentForPage jest.mock('@/helpers/cms-content-helper', () => ({ @@ -26,6 +27,11 @@ jest.mock('@/helpers/text-helper.js', () => ({ toTitleCase: jest.fn() })); +jest.mock('@/helpers/damage-review-content-generator.js', () => ({ + getDamageDisplayContent: jest.fn(), + getLocationAnswer: jest.fn() +})); + // Mock our module for promises. jest.mock('@/helpers/layout-helper.js', () => jest.fn()); @@ -61,6 +67,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRu beforeEach(() => { formatAddress.mockClear(); toDisplayPhoneNumber.mockClear(); + getDamageDisplayContent.mockClear(); }); describe('tpa-submit', () => { @@ -343,38 +350,25 @@ describe('tpa-submit', () => { expect(vehicleSection.lines).toStrictEqual(expectedLines); } ); - // TODO update because this case is now much more complicated - test.each([ - ['Apple sauce', 'Apple sauce']// , - // ['', ''], - // ['', undefined], - // ['', null] - ])( - 'damage line is %p when store damage is %p', - async (damageLine, storeDamage) => { - // Arrange - const initialStore = { - order: { - policy: { damageCause: storeDamage } - } - }; - const { wrapper } = getMountedComponent(initialStore); - const damageSectionIndex = 1; - const expectedLines = [damageLine]; + test('damage section lines equal result from getDamageDisplayContent', async () => { + // Arrange + const { wrapper } = getMountedComponent(); + const damageSectionIndex = 1; + const expectedLines = ['hi', 'potato', 'vehicle 3']; + getDamageDisplayContent.mockImplementationOnce(() => expectedLines); - // Act - await tpaSubmit.beforeRouteEnter.call( - wrapper.vm, - { query: { issPage: 'tpa-submit' } }, - undefined, - (c) => c(wrapper.vm) - ); + // Act + await tpaSubmit.beforeRouteEnter.call( + wrapper.vm, + { query: { issPage: 'tpa-submit' } }, + undefined, + (c) => c(wrapper.vm) + ); - // Assert - const damageSection = wrapper.vm.sections[damageSectionIndex]; - expect(damageSection.lines).toStrictEqual(expectedLines); - } - ); + // Assert + const damageSection = wrapper.vm.sections[damageSectionIndex]; + expect(damageSection.lines).toEqual(expectedLines); + }); describe('preferred shop section', () => { test('has three lines', async () => { // Arrange @@ -766,5 +760,22 @@ describe('tpa-submit', () => { expect(result).toBe(null); }); }); + test.each([ + [[1, 5, 6], [1, 5, 6]], + [[], []], + [undefined, []], + [null, []] + ])('getAnswersNullSafe', (rawAnswers, expected) => { + // Arrange + const widgetName = 'WidgetName'; + const { wrapper } = getMountedComponent(); + wrapper.vm.getCmsContent = jest.fn().mockImplementationOnce(() => rawAnswers); + + // Act + const result = wrapper.vm.getAnswersNullSafe(widgetName); + + // Assert + expect(result).toEqual(expected); + }); }); }); From a84c0081c85f874b832bde12784e7690690b6f99 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Mon, 22 Jan 2024 16:14:49 -0500 Subject: [PATCH 4/5] Updating damage review tests --- .../damage-review-content-generator.spec.js | 411 +++++++++++++++++ .../damage-review/damage-review.spec.js | 428 ++---------------- 2 files changed, 446 insertions(+), 393 deletions(-) create mode 100644 src/helpers/damage-review-content-generator.spec.js diff --git a/src/helpers/damage-review-content-generator.spec.js b/src/helpers/damage-review-content-generator.spec.js new file mode 100644 index 00000000..8a20d7d7 --- /dev/null +++ b/src/helpers/damage-review-content-generator.spec.js @@ -0,0 +1,411 @@ +import { getDamageDisplayContent, getLocationAnswer } from '@/helpers/damage-review-content-generator.js'; +import damageLocationsSelected from '@/constants/damage-locations-selected'; + +const testConstants = { + cmsConstants: { + widgetNames: { + locations: 'DamageLocationsWidget', + driverDamages: 'DriverDamagesWidget', + passengerDamages: 'PassengerDamagesWidget' + }, + damageLocations: { + windshield: damageLocationsSelected.WINDSHIELD, + driver: damageLocationsSelected.DRIVER, + passenger: damageLocationsSelected.PASSENGER, + rear: damageLocationsSelected.REAR + }, + damageNames: { + vent: damageLocationsSelected.VENT, + front: damageLocationsSelected.FRONT, + back: damageLocationsSelected.BACK, + quarter: damageLocationsSelected.QUARTER, + side: damageLocationsSelected.SIDEDOOR + }, + locationCopy: { + windshield: 'Windshield copy', + driver: 'Driver copy', + passenger: 'Passenger copy', + rear: 'Rear copy' + }, + damageCopy: { + vent: 'Vent copy', + front: 'Front copy', + back: 'Back copy', + quarter: 'Quarter copy', + side: 'Side copy' + }, + imageId: '00000000-0000-0000-0000-000000000000' + }, + glassItems: { + windshield: { + glassLocation: damageLocationsSelected.WINDSHIELD, + glassName: damageLocationsSelected.SINGLE + }, + rear: { + glassLocation: damageLocationsSelected.REAR, + glassName: damageLocationsSelected.STATIONARY + }, + passengerItems: { + vent: { + glassLocation: damageLocationsSelected.PASSENGER, + glassName: damageLocationsSelected.VENT + }, + front: { + glassLocation: damageLocationsSelected.PASSENGER, + glassName: damageLocationsSelected.FRONT + }, + back: { + glassLocation: damageLocationsSelected.PASSENGER, + glassName: damageLocationsSelected.BACK + }, + quarter: { + glassLocation: damageLocationsSelected.PASSENGER, + glassName: damageLocationsSelected.QUARTER + }, + side: { + glassLocation: damageLocationsSelected.PASSENGER, + glassName: damageLocationsSelected.SIDEDOOR + } + }, + driverItems: { + vent: { + glassLocation: damageLocationsSelected.DRIVER, + glassName: damageLocationsSelected.VENT + }, + front: { + glassLocation: damageLocationsSelected.DRIVER, + glassName: damageLocationsSelected.FRONT + }, + back: { + glassLocation: damageLocationsSelected.DRIVER, + glassName: damageLocationsSelected.BACK + }, + quarter: { + glassLocation: damageLocationsSelected.DRIVER, + glassName: damageLocationsSelected.QUARTER + }, + side: { + glassLocation: damageLocationsSelected.DRIVER, + glassName: damageLocationsSelected.SIDEDOOR + } + } + } +}; +const cmsContent = { + DamageLocationsWidget: { + Answers: [ + { + Name: testConstants.cmsConstants.damageLocations.windshield, + Text: testConstants.cmsConstants.locationCopy.windshield, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageLocations.driver, + Text: testConstants.cmsConstants.locationCopy.driver, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: testConstants.cmsConstants.widgetNames.driverDamages + }, + { + Name: testConstants.cmsConstants.damageLocations.passenger, + Text: testConstants.cmsConstants.locationCopy.passenger, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: testConstants.cmsConstants.widgetNames.passengerDamages + }, + { + Name: testConstants.cmsConstants.damageLocations.rear, + Text: testConstants.cmsConstants.locationCopy.rear, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + } + ] + }, + DriverDamagesWidget: { + Answers: [ + { + Name: testConstants.cmsConstants.damageNames.vent, + Text: testConstants.cmsConstants.damageCopy.vent, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.front, + Text: testConstants.cmsConstants.damageCopy.front, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.back, + Text: testConstants.cmsConstants.damageCopy.back, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.quarter, + Text: testConstants.cmsConstants.damageCopy.quarter, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.side, + Text: testConstants.cmsConstants.damageCopy.side, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + } + ] + }, + PassengerDamagesWidget: { + Answers: [ + { + Name: testConstants.cmsConstants.damageNames.vent, + Text: testConstants.cmsConstants.damageCopy.vent, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.front, + Text: testConstants.cmsConstants.damageCopy.front, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.back, + Text: testConstants.cmsConstants.damageCopy.back, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.quarter, + Text: testConstants.cmsConstants.damageCopy.quarter, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + }, + { + Name: testConstants.cmsConstants.damageNames.side, + Text: testConstants.cmsConstants.damageCopy.side, + SubText: '', + ImageId: testConstants.cmsConstants.imageId, + Image: '', + SubWidgetName: '' + } + ] + } +}; + +describe('damage-review-content-generator', () => { + describe('getLocationAnswer', () => { + test('answer with damage location name match', () => { + // Arrange + const damageLocation = 'matching name'; + const expected = { Name: damageLocation }; + const locationAnswers = [{ Name: 'non matching name' }, expected]; + + // Act + const result = getLocationAnswer(damageLocation, locationAnswers); + + // Assert + expect(result).toEqual(expected); + }); + test('no damage location name match', () => { + // Arrange + const damageLocation = 'random string'; + const locationAnswers = [{ Name: 'non matching name' }]; + + // Act + const result = getLocationAnswer(damageLocation, locationAnswers); + + // Assert + expect(result).toBe(undefined); + }); + test.each([ + [[]], + [null], + [undefined] + ])('location answers %p', (locationAnswers) => { + // Arrange + const damageLocation = 'some string'; + + // Act + const result = getLocationAnswer(damageLocation, locationAnswers); + + // Assert + expect(result).toBe(undefined); + }); + }); + describe('Correctly assembles damage info into a display string', () => { + const locationAnswers = cmsContent.DamageLocationsWidget.Answers; + test('Shows windshield copy when windshield damage is included', async () => { + // Arrange + const glassToReplace = [testConstants.glassItems.windshield]; + const isRepair = false; + + // Act + const result = getDamageDisplayContent(locationAnswers, null, null, glassToReplace, isRepair); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.windshield + ]); + }); + + test('Windshield copy is shown when order is a repair', async () => { + // Arrange + const glassToReplace = []; + const isRepair = true; + + // Act + const result = getDamageDisplayContent(locationAnswers, null, null, glassToReplace, isRepair); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.windshield + ]); + }); + + test('Rear windshield copy shows when rear damage is present', async () => { + // Arrange + const glassToReplace = [testConstants.glassItems.rear]; + const isRepair = false; + + // Act + const result = getDamageDisplayContent(locationAnswers, null, null, glassToReplace, isRepair); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.rear + ]); + }); + + test('Driver side copy and items are shown when driver side damage is present', async () => { + // Arrange + const driverSideDamageAnswers = cmsContent.DriverDamagesWidget.Answers; + const glassToReplace = [ + testConstants.glassItems.driverItems.back, + testConstants.glassItems.driverItems.front + ]; + const isRepair = false; + const expectedList = '
      ' + + `
    • ${testConstants.cmsConstants.damageCopy.front}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.back}
    • ` + + '
    '; + + // Act + const result = getDamageDisplayContent( + locationAnswers, + driverSideDamageAnswers, + null, + glassToReplace, + isRepair + ); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.driver, + expectedList + ]); + }); + + test('Passenger side copy and items are shown when passenger side damage is present', async () => { + // Arrange + const passengerSideDamageAnswers = cmsContent.PassengerDamagesWidget.Answers; + const glassToReplace = [ + testConstants.glassItems.passengerItems.quarter, + testConstants.glassItems.passengerItems.vent, + testConstants.glassItems.passengerItems.side + ]; + const isRepair = false; + const expectedList = '
      ' + + `
    • ${testConstants.cmsConstants.damageCopy.vent}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.quarter}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.side}
    • ` + + '
    '; + + // Act + const result = getDamageDisplayContent( + locationAnswers, + null, + passengerSideDamageAnswers, + glassToReplace, + isRepair + ); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.passenger, + expectedList + ]); + }); + + test('All relevant sections are shown in order in multiglass scenario', async () => { + // Arrange + const driverSideDamageAnswers = cmsContent.DriverDamagesWidget.Answers; + const passengerSideDamageAnswers = cmsContent.PassengerDamagesWidget.Answers; + const glassToReplace = [ + testConstants.glassItems.windshield, + testConstants.glassItems.rear, + testConstants.glassItems.driverItems.vent, + testConstants.glassItems.driverItems.front, + testConstants.glassItems.driverItems.back, + testConstants.glassItems.passengerItems.quarter, + testConstants.glassItems.passengerItems.back, + testConstants.glassItems.passengerItems.side + ]; + const isRepair = false; + const expectedDriverDamageList = '
      ' + + `
    • ${testConstants.cmsConstants.damageCopy.vent}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.front}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.back}
    • ` + + '
    '; + const expectedPassengerDamageList = '
      ' + + `
    • ${testConstants.cmsConstants.damageCopy.back}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.quarter}
    • ` + + `
    • ${testConstants.cmsConstants.damageCopy.side}
    • ` + + '
    '; + + // Act + const result = getDamageDisplayContent( + locationAnswers, + driverSideDamageAnswers, + passengerSideDamageAnswers, + glassToReplace, + isRepair + ); + + // Assert + expect(result).toStrictEqual([ + testConstants.cmsConstants.locationCopy.windshield, + testConstants.cmsConstants.locationCopy.driver, + expectedDriverDamageList, + testConstants.cmsConstants.locationCopy.passenger, + expectedPassengerDamageList, + testConstants.cmsConstants.locationCopy.rear + ]); + }); + }); +}); diff --git a/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.spec.js b/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.spec.js index 4a0a2fa7..5e369a72 100644 --- a/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.spec.js +++ b/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.spec.js @@ -2,113 +2,16 @@ import damageReview from '@/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.vue'; // Supporting Files +import { createTestingPinia } from '@pinia/testing'; +import { useMainStore } from '@/store'; import { shallowMount } from '@vue/test-utils'; import { getMountOptions } from '@/helpers/unit-test-helper.js'; -import damageLocationsSelected from '@/constants/damage-locations-selected'; +import { getDamageDisplayContent } from '@/helpers/damage-review-content-generator.js'; -const testConstants = { - cmsConstants: { - widgetNames: { - header: 'DamageReviewWidget', - locations: 'DamageLocationsWidget', - driverDamages: 'DriverDamagesWidget', - passengerDamages: 'PassengerDamagesWidget' - }, - header: { - text: 'Damage' - }, - damageLocations: { - windshield: damageLocationsSelected.WINDSHIELD, - driver: damageLocationsSelected.DRIVER, - passenger: damageLocationsSelected.PASSENGER, - rear: damageLocationsSelected.REAR - }, - damageNames: { - vent: damageLocationsSelected.VENT, - front: damageLocationsSelected.FRONT, - back: damageLocationsSelected.BACK, - quarter: damageLocationsSelected.QUARTER, - side: damageLocationsSelected.SIDEDOOR - }, - locationCopy: { - windshield: 'Windshield copy', - driver: 'Driver copy', - passenger: 'Passenger copy', - rear: 'Rear copy' - }, - damageCopy: { - vent: 'Vent copy', - front: 'Front copy', - back: 'Back copy', - quarter: 'Quarter copy', - side: 'Side copy' - }, - imageId: '00000000-0000-0000-0000-000000000000' - }, - makeBulletedList: (items) => { - let list = '
      '; - items.forEach((item) => { - list += `
    • ${item}
    • `; - }); - list += '
    '; - - return list; - }, - glassItems: { - windshield: { - glassLocation: damageLocationsSelected.WINDSHIELD, - glassName: damageLocationsSelected.SINGLE - }, - rear: { - glassLocation: damageLocationsSelected.REAR, - glassName: damageLocationsSelected.STATIONARY - }, - passengerItems: { - vent: { - glassLocation: damageLocationsSelected.PASSENGER, - glassName: damageLocationsSelected.VENT - }, - front: { - glassLocation: damageLocationsSelected.PASSENGER, - glassName: damageLocationsSelected.FRONT - }, - back: { - glassLocation: damageLocationsSelected.PASSENGER, - glassName: damageLocationsSelected.BACK - }, - quarter: { - glassLocation: damageLocationsSelected.PASSENGER, - glassName: damageLocationsSelected.QUARTER - }, - side: { - glassLocation: damageLocationsSelected.PASSENGER, - glassName: damageLocationsSelected.SIDEDOOR - } - }, - driverItems: { - vent: { - glassLocation: damageLocationsSelected.DRIVER, - glassName: damageLocationsSelected.VENT - }, - front: { - glassLocation: damageLocationsSelected.DRIVER, - glassName: damageLocationsSelected.FRONT - }, - back: { - glassLocation: damageLocationsSelected.DRIVER, - glassName: damageLocationsSelected.BACK - }, - quarter: { - glassLocation: damageLocationsSelected.DRIVER, - glassName: damageLocationsSelected.QUARTER - }, - side: { - glassLocation: damageLocationsSelected.DRIVER, - glassName: damageLocationsSelected.SIDEDOOR - } - } - } -}; +jest.mock('@/helpers/damage-review-content-generator.js', () => ({ + getDamageDisplayContent: jest.fn(), + getLocationAnswer: jest.fn() +})); let cmsContent; const mockMixin = { @@ -117,15 +20,22 @@ const mockMixin = { } }; -function getShallowMountedComponent(initialData = {}, methodToRun = () => {}) { +function getShallowMountedComponent(mainInitialState = {}, initialData = {}, methodToRun = () => {}) { const mountOptions = getMountOptions({ router: { navigate: jest.fn() } }); + const testingPinia = createTestingPinia({ + initialState: { + main: mainInitialState + } + }); + useMainStore(testingPinia); methodToRun(); + mountOptions.global.plugins = [testingPinia]; mountOptions.data = () => ( initialData ); @@ -137,300 +47,32 @@ function getShallowMountedComponent(initialData = {}, methodToRun = () => {}) { } beforeEach(() => { - cmsContent = { - DamageReviewWidget: { - Text: testConstants.cmsConstants.header.text - }, - DamageLocationsWidget: { - Answers: [ - { - Name: testConstants.cmsConstants.damageLocations.windshield, - Text: testConstants.cmsConstants.locationCopy.windshield, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageLocations.driver, - Text: testConstants.cmsConstants.locationCopy.driver, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: testConstants.cmsConstants.widgetNames.driverDamages - }, - { - Name: testConstants.cmsConstants.damageLocations.passenger, - Text: testConstants.cmsConstants.locationCopy.passenger, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: testConstants.cmsConstants.widgetNames.passengerDamages - }, - { - Name: testConstants.cmsConstants.damageLocations.rear, - Text: testConstants.cmsConstants.locationCopy.rear, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - } - ] - }, - DriverDamagesWidget: { - Answers: [ - { - Name: testConstants.cmsConstants.damageNames.vent, - Text: testConstants.cmsConstants.damageCopy.vent, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.front, - Text: testConstants.cmsConstants.damageCopy.front, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.back, - Text: testConstants.cmsConstants.damageCopy.back, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.quarter, - Text: testConstants.cmsConstants.damageCopy.quarter, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.side, - Text: testConstants.cmsConstants.damageCopy.side, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - } - ] - }, - PassengerDamagesWidget: { - Answers: [ - { - Name: testConstants.cmsConstants.damageNames.vent, - Text: testConstants.cmsConstants.damageCopy.vent, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.front, - Text: testConstants.cmsConstants.damageCopy.front, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.back, - Text: testConstants.cmsConstants.damageCopy.back, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.quarter, - Text: testConstants.cmsConstants.damageCopy.quarter, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - }, - { - Name: testConstants.cmsConstants.damageNames.side, - Text: testConstants.cmsConstants.damageCopy.side, - SubText: '', - ImageId: testConstants.cmsConstants.imageId, - Image: '', - SubWidgetName: '' - } - ] - } - }; + getDamageDisplayContent.mockClear(); }); describe('Damage Review Block', () => { - describe('Correctly assembles damage info into a display string', () => { - test('Shows windshield copy when windshield damage is included', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, + test('computed displayContent calls getDamageDisplayContent with expected', () => { + // Arrange + const glassToReplace = ['front-window', 'side-window']; + const isRepair = false; + const initialStore = { + order: { damage: { - isRepair: false, - glassToReplace: [testConstants.glassItems.windshield] + glassToReplace, + isRepair } - }); + } + }; + const expected = ['a', 'v', 'n']; + getDamageDisplayContent.mockImplementationOnce(() => expected); + const { wrapper } = getShallowMountedComponent(initialStore, {}); - // Act - await wrapper.vm.$nextTick(); + // Act + const result = wrapper.vm.displayContent; - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.windshield - ]); - }); - - test('Windshield copy is shown when order is a repair', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, - damage: { - isRepair: true, - numberOfChips: 2, - glassToReplace: [] - } - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.windshield - ]); - }); - - test('Rear windshield copy shows when rear damage is present', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, - damage: { - isRepair: false, - numberOfChips: null, - glassToReplace: [testConstants.glassItems.rear] - } - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.rear - ]); - }); - - test('Driver side copy and items are shown when driver side damage is present', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, - damage: { - isRepair: false, - numberOfChips: null, - glassToReplace: [ - testConstants.glassItems.driverItems.back, - testConstants.glassItems.driverItems.front - ] - } - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.driver, - testConstants.makeBulletedList([ - testConstants.cmsConstants.damageCopy.front, - testConstants.cmsConstants.damageCopy.back - ]) - ]); - }); - - test('Passenger side copy and items are shown when passenger side damage is present', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, - damage: { - isRepair: false, - numberOfChips: null, - glassToReplace: [ - testConstants.glassItems.passengerItems.quarter, - testConstants.glassItems.passengerItems.vent, - testConstants.glassItems.passengerItems.side - ] - } - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.passenger, - testConstants.makeBulletedList([ - testConstants.cmsConstants.damageCopy.vent, - testConstants.cmsConstants.damageCopy.quarter, - testConstants.cmsConstants.damageCopy.side - ]) - ]); - }); - - test('All relevant sections are shown in order in multiglass scenario', async () => { - // Arrange - const { wrapper } = getShallowMountedComponent({ - cmsWidgetName: testConstants.cmsConstants.widgetNames.header, - damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, - damage: { - isRepair: false, - numberOfChips: null, - glassToReplace: [ - testConstants.glassItems.windshield, - testConstants.glassItems.rear, - testConstants.glassItems.driverItems.vent, - testConstants.glassItems.driverItems.front, - testConstants.glassItems.driverItems.back, - testConstants.glassItems.passengerItems.quarter, - testConstants.glassItems.passengerItems.back, - testConstants.glassItems.passengerItems.side - ] - } - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual([ - testConstants.cmsConstants.locationCopy.windshield, - testConstants.cmsConstants.locationCopy.driver, - testConstants.makeBulletedList([ - testConstants.cmsConstants.damageCopy.vent, - testConstants.cmsConstants.damageCopy.front, - testConstants.cmsConstants.damageCopy.back - ]), - testConstants.cmsConstants.locationCopy.passenger, - testConstants.makeBulletedList([ - testConstants.cmsConstants.damageCopy.back, - testConstants.cmsConstants.damageCopy.quarter, - testConstants.cmsConstants.damageCopy.side - ]), - testConstants.cmsConstants.locationCopy.rear - ]); - }); + // Assert + expect(result).toStrictEqual(expected); + expect(getDamageDisplayContent).toBeCalledTimes(1); + expect(getDamageDisplayContent).toBeCalledWith([], [], [], glassToReplace, isRepair); }); }); From 503ac4e1c6b9a9ae1b357ad334bc44e208a36b95 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Mon, 22 Jan 2024 16:18:44 -0500 Subject: [PATCH 5/5] Simplifying --- .../review-sections/damage-review/damage-review.vue | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.vue b/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.vue index 66089506..ac93b4bf 100644 --- a/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.vue +++ b/src/layouts/payment-method/review-dropdown/review-sections/damage-review/damage-review.vue @@ -23,7 +23,7 @@ export default { computed: { displayContent() { const { glassToReplace, isRepair } = useMainStore().order.damage; - return this.getDamageDisplayContent( + return getDamageDisplayContent( this.locationAnswers, this.driverSideDamageAnswers, this.passengerSideDamageAnswers, @@ -32,11 +32,11 @@ export default { ); }, driverSideDamageAnswers() { - const answerContent = this.getLocationAnswer(damageLocationsSelected.DRIVER, this.locationAnswers); + const answerContent = getLocationAnswer(damageLocationsSelected.DRIVER, this.locationAnswers); return this.getAnswersNullSafe(answerContent?.SubWidgetName); }, passengerSideDamageAnswers() { - const answerContent = this.getLocationAnswer(damageLocationsSelected.PASSENGER, this.locationAnswers); + const answerContent = getLocationAnswer(damageLocationsSelected.PASSENGER, this.locationAnswers); return this.getAnswersNullSafe(answerContent?.SubWidgetName); }, locationAnswers() { @@ -47,9 +47,7 @@ export default { getAnswersNullSafe(widgetName) { const rawAnswers = this.getCmsContent(widgetName, 'Answers'); return rawAnswers || []; - }, - getDamageDisplayContent, - getLocationAnswer + } } };