diff --git a/jest.config.js b/jest.config.js index fd7713966..720237d10 100644 --- a/jest.config.js +++ b/jest.config.js @@ -16,7 +16,7 @@ module.exports = { testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { global: { - statements: 80, + statements: 85, }, }, }; diff --git a/src/common-components/button-question/button-question.vue b/src/common-components/button-question/button-question.vue index e1fee1e40..d86dcd2ce 100644 --- a/src/common-components/button-question/button-question.vue +++ b/src/common-components/button-question/button-question.vue @@ -10,7 +10,8 @@ {{groupName}} { +describe("funnelHeader", () => { test("renders the logo image", () => { // Arrange // Act - const wrapper = shallowMount(siteHeader, { + const wrapper = shallowMount(funnelHeader, { propsData: { imageSrc: "image_url", }, diff --git a/src/common-components/site-header/site-header.vue b/src/common-components/funnel-header/funnel-header.vue similarity index 90% rename from src/common-components/site-header/site-header.vue rename to src/common-components/funnel-header/funnel-header.vue index 441b188c4..7b6c6efc6 100644 --- a/src/common-components/site-header/site-header.vue +++ b/src/common-components/funnel-header/funnel-header.vue @@ -9,11 +9,12 @@ + + diff --git a/src/common-components/vehicle-banner/vehicle-banner.vue b/src/common-components/vehicle-banner/vehicle-banner.vue index 32caa82f8..984657a47 100644 --- a/src/common-components/vehicle-banner/vehicle-banner.vue +++ b/src/common-components/vehicle-banner/vehicle-banner.vue @@ -15,6 +15,7 @@ export default { vehicleImageSrc: { type: String, required: true, + default: "", }, }, }; diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index d9292b5f8..d2ccd28f4 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -1,5 +1,8 @@ const storeMutations = { UPDATE_YEAR: "updateYear", + UPDATE_MAKE: "updateMake", + UPDATE_MODEL: "updateModel", + UPDATE_STYLE: "updateStyle", }; export { storeMutations }; diff --git a/src/helpers/unit-test-helper.js b/src/helpers/unit-test-helper.js index 5b5deb521..268a8e524 100644 --- a/src/helpers/unit-test-helper.js +++ b/src/helpers/unit-test-helper.js @@ -1,5 +1,6 @@ import { storeActions } from "@/constants/store-actions"; import { storeMutations } from "@/constants/store-mutations.js"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios.js"; export function getMountOptions(mockData) { // Define our mocks to attached to the 'global' object for Vue/Jest. @@ -21,6 +22,7 @@ export function getMountOptions(mockData) { // Mock const files mocks.storeActions = storeActions; mocks.storeMutations = storeMutations; + mocks.navigationScenarios = navigationScenarios; // Mock $store and $router when accessing this.$store/$router mocks.$store = mockData.store; diff --git a/src/layouts/component-test/component-test.vue b/src/layouts/component-test/component-test.vue index d33833eb6..3ca8a3eda 100644 --- a/src/layouts/component-test/component-test.vue +++ b/src/layouts/component-test/component-test.vue @@ -2,31 +2,18 @@
-

List Card

+

Inputs

-
- - - +
+
+ +
@@ -52,7 +39,30 @@
- + +
+
+
+
+

List Card

+
Functioning as Checkbox
+
+
+
+
+
+ List Card Demo + +
@@ -69,7 +79,7 @@ Select Vehicle Year

Select Vehicle Year

Multi-Line Centered

-
@@ -594,8 +604,9 @@ import listCard from "@/ux-components/list-card/list-card"; import listButton from "@/ux-components/list-button/list-button"; import alert from "@/ux-components/alert/alert"; import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner"; -import siteHeader from "@/common-components/site-header/site-header"; +import funnelHeader from "@/common-components/funnel-header/funnel-header"; import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-button-horizontal"; +import checkbox from "@/ux-components/checkbox/checkbox"; export default { name: "App", components: { @@ -607,7 +618,8 @@ export default { alert, vehicleBanner, listButtonHorizontal, - siteHeader, + checkbox, + funnelHeader, }, data() { return { diff --git a/src/layouts/vehicle-make/vehicle-make.spec.js b/src/layouts/vehicle-make/vehicle-make.spec.js index 87df24e38..120f8de4f 100644 --- a/src/layouts/vehicle-make/vehicle-make.spec.js +++ b/src/layouts/vehicle-make/vehicle-make.spec.js @@ -13,7 +13,7 @@ jest.mock("@/helpers/layout-helper.js", () => ({ describe("vehicle-make.vue", () => { test("Make question component is initized with api data", async (done) => { - //Arange + //Arrange const radioQuestionCmsContent = { QuestionText: "What make is your vehicle?" }; const makeQuestionInitialData = ["honda", "ford", "dodge"]; const { wrapper, apiPromise } = setupMocks( { @@ -35,7 +35,7 @@ describe("vehicle-make.vue", () => { describe("vehicle-make.vue", () => { test("Page header is passed data from CMS", async (done) => { - //Arange + //Arrange const { wrapper, apiPromise } = setupMocks( { pageHeaderWidgetHeaderText: "Select a make to get started" }); //Act @@ -50,10 +50,37 @@ describe("vehicle-make.vue", () => { }); }); +describe("vehicle-make.vue", () => { + test("BackButtonAction triggers a router.navigate change", async (done) => { + + //Arrange + const { wrapper, apiPromise } = setupMocks( { + pageHeaderWidgetHeaderText: "Select a make to get started", + mountOptionsMockData: { + router: { + navigate: jest.fn() + }, + }, + }); + + //Act + vehicleMake.beforeRouteEnter.call(wrapper.vm, { query: { fmgPage: "vehicle-make" } }, undefined, (c) => c(wrapper.vm)); + wrapper.vm.backButtonAction(); + await nextTick(); + + //Assert + apiPromise.finally(() => { + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); + done(); + }); + }); +}); + function setupMocks({ radioQuestionCmsContent = {}, makeQuestionInitialData = {}, pageHeaderWidgetHeaderText = {}, + mountOptionsMockData = {}, }) { //Mock api responses @@ -84,7 +111,7 @@ function setupMocks({ loadInitialData: jest.fn(), initializeComponent: jest.fn(), }; - const mountOptions = getMountOptions({ }); + const mountOptions = getMountOptions(mountOptionsMockData); const wrapper = shallowMount(vehicleMake, mountOptions); const makeQuestionWrapper = wrapper.findComponent({ name: "makeQuestion" }); makeQuestionWrapper.vm.initializeComponent = makeQuestion.methods.initializeComponent; diff --git a/src/layouts/vehicle-make/vehicle-make.vue b/src/layouts/vehicle-make/vehicle-make.vue index a5abd776b..be5e925ea 100644 --- a/src/layouts/vehicle-make/vehicle-make.vue +++ b/src/layouts/vehicle-make/vehicle-make.vue @@ -1,10 +1,16 @@