diff --git a/src/layouts/review/review-sections/damage-review/damage-review.spec.js b/src/layouts/review/review-sections/damage-review/damage-review.spec.js index a6dbe6f2d..2e4ef3e2a 100644 --- a/src/layouts/review/review-sections/damage-review/damage-review.spec.js +++ b/src/layouts/review/review-sections/damage-review/damage-review.spec.js @@ -1,19 +1,210 @@ import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; -import damageReview from "@/layouts/review/review-sections/damage-review/damage-review"; -jest.mock("@/helpers/cms-content-helper", () => ({ - fetchCmsContentForPage: () => Promise.resolve("content"), -})); +import damageReview from "@/layouts/review/review-sections/damage-review/damage-review"; +import { damageLocationsSelected as glassConstants } from "@/constants/damage-locations-selected"; + +const testConstants = { + cmsConstants: { + widgetNames: { + header: "DamageReviewWidget", + locations: "DamageLocationsWidget", + driverDamages: "DriverDamagesWidget", + passengerDamages: "PassengerDamagesWidget", + }, + header: { + text: "Damage", + }, + damageLocations: { + windshield: glassConstants.WINDSHIELD, + driver: glassConstants.DRIVER, + passenger: glassConstants.PASSENGER, + rear: glassConstants.REAR, + }, + damageNames: { + vent: glassConstants.VENT, + front: glassConstants.FRONT, + back: glassConstants.BACK, + quarter: glassConstants.QUARTER, + side: glassConstants.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 = ""; + + return list; + }, + glassItems: { + windshield: { + glassLocation: glassConstants.WINDSHIELD, + glassName: glassConstants.SINGLE, + }, + }, +}; + +let cmsContent; describe("Damage Review Block", () => { + 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: "", + }, + ], + }, + }; + }); + describe("Correctly assembles damage info into a display string", () => { - test("Basic Replace", async () => { + test("Shows windshield copy when windshield damage is included", async () => { // Arrange const { wrapper } = setupMocks({ propsData: { + cmsWidgetName: testConstants.cmsConstants.widgetNames.header, + damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, damage: { isRepair: false, + glassToReplace: [testConstants.glassItems.windshield], }, }, }); @@ -22,16 +213,21 @@ describe("Damage Review Block", () => { await wrapper.vm.$nextTick(); // Assert - expect(wrapper.vm.displayContent).toStrictEqual(["Windshield crack"]); + expect(wrapper.vm.displayContent).toStrictEqual([ + testConstants.cmsConstants.locationCopy.windshield, + ]); }); - test("Basic Repair", async () => { + test("Windshield copy is shown when order is a repair", async () => { // Arrange const { wrapper } = setupMocks({ propsData: { + cmsWidgetName: testConstants.cmsConstants.widgetNames.header, + damageLocationsWidgetName: testConstants.cmsConstants.widgetNames.locations, damage: { isRepair: true, numberOfChips: 2, + glassToReplace: [], }, }, }); @@ -40,25 +236,9 @@ describe("Damage Review Block", () => { await wrapper.vm.$nextTick(); // Assert - expect(wrapper.vm.displayContent).toStrictEqual(["Windshield repair - 2 chips"]); - }); - - test("Basic Repair - no s with 1 chip", async () => { - // Arrange - const { wrapper } = setupMocks({ - propsData: { - damage: { - isRepair: true, - numberOfChips: 1, - }, - }, - }); - - // Act - await wrapper.vm.$nextTick(); - - // Assert - expect(wrapper.vm.displayContent).toStrictEqual(["Windshield repair - 1 chip"]); + expect(wrapper.vm.displayContent).toStrictEqual([ + testConstants.cmsConstants.locationCopy.windshield, + ]); }); }); }); @@ -66,6 +246,16 @@ describe("Damage Review Block", () => { function setupMocks(customMountOptions) { const mountOptions = getMountOptions(customMountOptions); + const mockMixin = { + methods: { + getCmsContent: jest.fn((widgetName, cmsFieldName) => { + return cmsContent?.[widgetName]?.[cmsFieldName] ?? ""; + }), + }, + }; + + mountOptions.global.mixins = [mockMixin]; + const wrapper = shallowMount(damageReview, mountOptions); wrapper.vm.setCmsContent = jest.fn(); return { wrapper };