diff --git a/src/layouts/review/review-block/review-block.spec.js b/src/layouts/review/review-block/review-block.spec.js new file mode 100644 index 000000000..1a25e8bfd --- /dev/null +++ b/src/layouts/review/review-block/review-block.spec.js @@ -0,0 +1,36 @@ +import { shallowMount } from "@vue/test-utils"; +import { getMountOptions } from "@/helpers/unit-test-helper.js"; +import store from "@/store"; +import reviewBlock from "@/layouts/review/review-block/review-block"; + +jest.mock("@/helpers/cms-content-helper", () => ({ + fetchCmsContentForPage: () => Promise.resolve("content"), +})); + +describe("Review Content Block", () => { + test("Displays one new line of content for each element in the content prop.", () => { + // Arrange + const { wrapper } = setupMocks({ + propsData: { + headerCmsWidgetName: "TestWidget", + content: ["a", "b", "c", "d"], + }, + }); + + // Act + const contentLines = wrapper.findAll("[data-test='contentLine']"); + + // Assert + expect(contentLines.length).toBe(4); + }); +}); + +function setupMocks(customMountOptions) { + const mountOptions = getMountOptions(customMountOptions); + + mountOptions["attachTo"] = document.body; + + const wrapper = shallowMount(reviewBlock, mountOptions); + wrapper.vm.setCmsContent = jest.fn(); + return { wrapper }; +} diff --git a/src/layouts/review/review-block/review-block.vue b/src/layouts/review/review-block/review-block.vue new file mode 100644 index 000000000..128e488d7 --- /dev/null +++ b/src/layouts/review/review-block/review-block.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/layouts/review/review-sections/vehicle-review/vehicle-review.spec.js b/src/layouts/review/review-sections/vehicle-review/vehicle-review.spec.js new file mode 100644 index 000000000..e5baa2225 --- /dev/null +++ b/src/layouts/review/review-sections/vehicle-review/vehicle-review.spec.js @@ -0,0 +1,37 @@ +import { shallowMount } from "@vue/test-utils"; +import { getMountOptions } from "@/helpers/unit-test-helper.js"; +import store from "@/store"; +import vehicleReview from "@/layouts/review/review-sections/vehicle-review/vehicle-review"; + +jest.mock("@/helpers/cms-content-helper", () => ({ + fetchCmsContentForPage: () => Promise.resolve("content"), +})); + +describe("Vehicle Review Block", () => { + test("Correctly assembles vehicle info into a display string", async () => { + // Arrange + const { wrapper } = setupMocks({ + propsData: { + vehicle: { + year: "2019", + make: "Honda", + model: "Odyssey", + }, + }, + }); + + // Act + await wrapper.vm.$nextTick(); + + // Assert + expect(wrapper.vm.displayContent).toStrictEqual(["2019 Honda Odyssey"]); + }); +}); + +function setupMocks(customMountOptions) { + const mountOptions = getMountOptions(customMountOptions); + + const wrapper = shallowMount(vehicleReview, mountOptions); + wrapper.vm.setCmsContent = jest.fn(); + return { wrapper }; +} diff --git a/src/layouts/review/review-sections/vehicle-review/vehicle-review.vue b/src/layouts/review/review-sections/vehicle-review/vehicle-review.vue new file mode 100644 index 000000000..76248a1c2 --- /dev/null +++ b/src/layouts/review/review-sections/vehicle-review/vehicle-review.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue index 68ae16fee..2a152f8fd 100644 --- a/src/layouts/review/review.vue +++ b/src/layouts/review/review.vue @@ -24,8 +24,27 @@ isPrimary :buttonText="forwardButtonText" loaderColor="white" + class="mb-2" @click-event="forwardButtonAction" /> +
+ + + +
+ +
+ +
+ diff --git a/src/router/router-constants/fmgPage-values.js b/src/router/router-constants/fmgPage-values.js index 283c68ef1..b33d1f23c 100644 --- a/src/router/router-constants/fmgPage-values.js +++ b/src/router/router-constants/fmgPage-values.js @@ -17,6 +17,7 @@ const fmgPageValues = { SERVICE_LOCATION: "service-location", HERITAGE: "heritage", SCHEDULE: "schedule", + REVIEW: "review", }; export { fmgPageValues }; diff --git a/src/router/router-constants/navigation-scenarios.js b/src/router/router-constants/navigation-scenarios.js index 88b5c92a8..012d327d7 100644 --- a/src/router/router-constants/navigation-scenarios.js +++ b/src/router/router-constants/navigation-scenarios.js @@ -48,6 +48,9 @@ const navigationScenarios = { // Scheduling SELECTED_LOCATION: "SELECTED_LOCATION", + + // Review + REVIEW_VEHICLE_EDIT: "REVIEW_VEHICLE_EDIT", }; export { navigationScenarios }; diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index 32c6e4ba5..4c6232bfc 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -435,6 +435,15 @@ const routingTable = function (store) { }, ], }, + { + fmgPageValue: fmgPageValues.REVIEW, + maps: [ + { + scenario: navigationScenarios.REVIEW_VEHICLE_EDIT, + destinationFmgPageValue: fmgPageValues.VEHICLE_YEAR, + }, + ], + }, ]; };