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 @@
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
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,
+ },
+ ],
+ },
];
};