From b92c425fb45e7f9332e62d915f8ad8328e49c5ab Mon Sep 17 00:00:00 2001 From: FrankRua Date: Fri, 28 Jan 2022 10:22:33 -0500 Subject: [PATCH] Linter --- jest.config.js | 2 +- src/App.vue | 10 +- .../button-back/button-back.spec.js | 4 +- .../button-back/button-back.vue | 35 +- .../button-question/button-question.spec.js | 4 +- .../button-question/button-question.vue | 104 +- .../funnel-header/funnel-header.spec.js | 4 +- .../funnel-header/funnel-header.vue | 91 +- .../funnel-sub-header.spec.js | 6 +- .../funnel-sub-header/funnel-sub-header.vue | 34 +- .../text-input/text-input.spec.js | 7 +- .../text-input/text-input.vue | 20 +- .../vehicle-banner/vehicle-banner.spec.js | 6 +- .../vehicle-banner/vehicle-banner.vue | 6 +- src/constants/events.js | 26 +- src/helpers/cms-content-helper.js | 53 +- src/helpers/cms-helper.spec.js | 52 +- src/helpers/event-bus/event-bus.js | 39 +- src/helpers/event-bus/event-bus.spec.js | 83 +- src/layouts/address-poc/address-poc.vue | 57 +- src/layouts/component-test/component-test.vue | 1168 +++++++++-------- src/layouts/form-test/form-test.vue | 426 +++--- .../vehicle-damage/vehicle-damage.spec.js | 94 +- .../make-question/make-question.spec.js | 55 +- .../make-question/make-question.vue | 14 +- src/layouts/vehicle-make/vehicle-make.spec.js | 121 +- .../model-question/model-question.spec.js | 61 +- .../model-question/model-question.vue | 14 +- .../vehicle-model/vehicle-model.spec.js | 112 +- .../style-question/style-question.spec.js | 57 +- .../style-question/style-question.vue | 18 +- .../vehicle-style/vehicle-style.spec.js | 168 ++- src/layouts/vehicle-year/vehicle-year.spec.js | 105 +- .../year-question/year-question.spec.js | 53 +- .../year-question/year-question.vue | 16 +- src/main.js | 1 - src/mixins/base-mixin.js | 3 +- src/mixins/base-mixin.spec.js | 8 +- src/router/index.js | 34 +- src/router/router-constants/routing-table.js | 8 +- src/store/index.js | 49 +- src/store/store.spec.js | 67 +- .../button-main/button-main.spec.js | 25 +- src/ux-components/button-main/button-main.vue | 38 +- src/ux-components/checkbox/checkbox.spec.js | 17 +- src/ux-components/checkbox/checkbox.vue | 25 +- .../list-button-horizontal.spec.js | 34 +- .../list-button-horizontal.vue | 66 +- .../list-button/list-button.spec.js | 34 +- src/ux-components/list-button/list-button.vue | 69 +- src/ux-components/list-card/list-card.spec.js | 17 +- src/ux-components/list-card/list-card.vue | 105 +- src/ux-components/loader/loader.vue | 11 +- src/ux-components/text-link/text-link.spec.js | 11 +- src/ux-components/text-link/text-link.vue | 35 +- 55 files changed, 2158 insertions(+), 1624 deletions(-) diff --git a/jest.config.js b/jest.config.js index f4355ef93..bce302e5a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,7 +13,7 @@ module.exports = { "!src/helpers/unit-test-helper.js", "!src/layouts/component-test/component-test.vue", "!src/layouts/form-test/form-test.vue", - "!src/layouts/address-poc/address-poc.vue" + "!src/layouts/address-poc/address-poc.vue", ], //! means exclude from coverage. testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { diff --git a/src/App.vue b/src/App.vue index f64aad6aa..e529f225a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,9 +3,9 @@ diff --git a/src/common-components/button-back/button-back.spec.js b/src/common-components/button-back/button-back.spec.js index b8bc3256d..c7bff87f0 100644 --- a/src/common-components/button-back/button-back.spec.js +++ b/src/common-components/button-back/button-back.spec.js @@ -2,7 +2,6 @@ import { shallowMount } from "@vue/test-utils"; import buttonBack from "./button-back"; describe("back button", () => { - test("renders a button", () => { // Arrange const myFunction = () => {}; @@ -14,10 +13,9 @@ describe("back button", () => { backButtonAccessibleText: "something", }, }); - + // Assert expect(wrapper.find("button").exists()).toBe(true); wrapper.unmount(); }); - }); diff --git a/src/common-components/button-back/button-back.vue b/src/common-components/button-back/button-back.vue index 7f06dfcec..cf3a630bf 100644 --- a/src/common-components/button-back/button-back.vue +++ b/src/common-components/button-back/button-back.vue @@ -1,23 +1,36 @@ diff --git a/src/layouts/component-test/component-test.vue b/src/layouts/component-test/component-test.vue index 7363ec3d4..2f5dc0308 100644 --- a/src/layouts/component-test/component-test.vue +++ b/src/layouts/component-test/component-test.vue @@ -8,10 +8,10 @@
@@ -23,27 +23,21 @@
- +
- +
@@ -56,31 +50,31 @@ Functioning as Checkbox
@@ -95,13 +89,13 @@
Functioning as Checkbox
@@ -112,13 +106,13 @@
Checkbox no Description
@@ -129,13 +123,13 @@
Functioning as Radio Button
@@ -146,13 +140,13 @@
Radio Button no Description
@@ -163,14 +157,14 @@
Horizontal Checkbox
@@ -181,14 +175,14 @@
Checkbox no Description
@@ -199,13 +193,13 @@
Horizontal Radio Button
@@ -216,13 +210,13 @@
Radio Button no Description
@@ -235,93 +229,99 @@
-
+
-

- Select Vehicle Year -

+

Select Vehicle Year

- @@ -333,187 +333,205 @@
-
+

Select Vehicle Year

Functioning as Radio Buttons
-
+

Select Vehicle Year

-

List Button - Multi-Line Centered

+

+ List Button - Multi-Line Centered +

Functioning as Checkboxes
-
+

Multi-Line Centered

Functioning as Radio Buttons
-
+

Multi-Line Centered

@@ -525,104 +543,108 @@
-
+
-

- Select Vehicle Year -

+

Select Vehicle Year

Functioning as Radio Buttons
-
+
-

- Select Vehicle Year -

+

Select Vehicle Year

@@ -633,22 +655,10 @@
-

-

-

- +

+

+

+
@@ -710,60 +720,60 @@
@@ -775,7 +785,7 @@
@@ -787,7 +797,7 @@
@@ -797,94 +807,94 @@
- + :answers="checkboxAnswers" + :isMultiSelect="true" + ariaLabelBy="checkbox" + groupName="checkbox-list" + questionText="List Button as checkbox" + /> - - - - - - - - + :answers="radioAnswers" + ariaLabelBy="radio" + groupName="radio-list" + questionText="List Button as radio" + /> + + + + + + + + +
@@ -913,75 +923,97 @@ export default { checkbox, funnelHeader, buttonQuestion, - textLink + textLink, }, data() { return { years: [2023, 2022, 2021, 2020], - checkboxAnswers: ['Checkbox Answer 1', 'Checkbox Answer 2', 'Checkbox Answer 3'], - radioAnswers: ['Radio Answer 1', 'Radio Answer 2', 'Radio Answer 3'], - horizontalCheckboxAnswers: ['HCB Answer 1', 'HCB Answer 2', 'HCB Answer 3'], - horizontalRadioAnswers: ['HR Answer 1', 'HR Answer 2', 'HR Answer 3'], - listCardCheckBox: [{ - Name: 'List-Card-CB', - Text: "List Card CB", - SubText: "checkbox", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listCardRadio: [{ - Name: 'List-Card-R', - Text: "List Card R", - SubText: "Radio", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listCardCheckBoxHorizontalSubText: [{ - Name: 'List-Card-CBHst', - Text: "List Card CBHst", - SubText: "With Subtext", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listCardCheckBoxHorizontal: [{ - Name: 'List-Card-CBH', - Text: "List Card CBH", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listRadioHorizontalSubText: [{ - Name: 'List-Card-RHst', - Text: "List Card RHst", - SubText: "With Subtext", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listRadioHorizontal: [{ - Name: 'List-Card-RH', - Text: "List Card RH", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], - listCardGroup: [{ - Name: 'Side-Window-1', - Text: "Side Window", - SubText: "With Subtext", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }, - { - Name: 'Side-Window-2', - Text: "Side Window", - SubText: "With Subtext that is more than one line", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }, - { - Name: 'Side-Window-3', - Text: "Side Window", - ImageId: '53343ce4-5b6a-46aa-a80a-f948c1723955', - AnswerImageUrl: "side-window-damage-right-all.svg" - }], + checkboxAnswers: [ + "Checkbox Answer 1", + "Checkbox Answer 2", + "Checkbox Answer 3", + ], + radioAnswers: ["Radio Answer 1", "Radio Answer 2", "Radio Answer 3"], + horizontalCheckboxAnswers: [ + "HCB Answer 1", + "HCB Answer 2", + "HCB Answer 3", + ], + horizontalRadioAnswers: ["HR Answer 1", "HR Answer 2", "HR Answer 3"], + listCardCheckBox: [ + { + Name: "List-Card-CB", + Text: "List Card CB", + SubText: "checkbox", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listCardRadio: [ + { + Name: "List-Card-R", + Text: "List Card R", + SubText: "Radio", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listCardCheckBoxHorizontalSubText: [ + { + Name: "List-Card-CBHst", + Text: "List Card CBHst", + SubText: "With Subtext", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listCardCheckBoxHorizontal: [ + { + Name: "List-Card-CBH", + Text: "List Card CBH", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listRadioHorizontalSubText: [ + { + Name: "List-Card-RHst", + Text: "List Card RHst", + SubText: "With Subtext", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listRadioHorizontal: [ + { + Name: "List-Card-RH", + Text: "List Card RH", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], + listCardGroup: [ + { + Name: "Side-Window-1", + Text: "Side Window", + SubText: "With Subtext", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + { + Name: "Side-Window-2", + Text: "Side Window", + SubText: "With Subtext that is more than one line", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + { + Name: "Side-Window-3", + Text: "Side Window", + ImageId: "53343ce4-5b6a-46aa-a80a-f948c1723955", + AnswerImageUrl: "side-window-damage-right-all.svg", + }, + ], }; }, }; diff --git a/src/layouts/form-test/form-test.vue b/src/layouts/form-test/form-test.vue index 33a7e6a70..d56b764b3 100644 --- a/src/layouts/form-test/form-test.vue +++ b/src/layouts/form-test/form-test.vue @@ -1,119 +1,126 @@ diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 02a50023c..81c7c8b7a 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -26,24 +26,32 @@ jest.mock("@/helpers/cms-content-helper", () => ({ jest.mock("@/store", () => ({ getters: { vehicle: { - carId: "C00000000" - } - } + carId: "C00000000", + }, + }, })); describe("vehicle-damage.vue", () => { test("Page header is initailized with api data", async (done) => { - //Arrange const pageHeaderWidgetHeaderText = "Select Damage"; - const { wrapper, apiPromise } = setupMocks({ pageHeaderWidgetHeaderText: pageHeaderWidgetHeaderText }); + const { wrapper, apiPromise } = setupMocks({ + pageHeaderWidgetHeaderText: pageHeaderWidgetHeaderText, + }); //Act - vehicleDamage.beforeRouteEnter.call(wrapper.vm, { query: { fmgPage: "vehicle-damage" } }, undefined, (c) => c(wrapper.vm)); + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); //Assert apiPromise.finally(() => { - expect(funnelSubHeader.methods.initializeComponent).toHaveBeenCalledWith(pageHeaderWidgetHeaderText); + expect(funnelSubHeader.methods.initializeComponent).toHaveBeenCalledWith( + pageHeaderWidgetHeaderText + ); done(); }); }); @@ -51,20 +59,28 @@ describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => { test("Page logo image is initailized with api data", async (done) => { - //Arrange const SiteHeaderWidget = { LogoImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/safelite-logo.svg?sfvrsn=45e7ed06_3", - } - const { wrapper, apiPromise } = setupMocks({ SiteHeaderWidget: SiteHeaderWidget }); + }; + const { wrapper, apiPromise } = setupMocks({ + SiteHeaderWidget: SiteHeaderWidget, + }); //Act - vehicleDamage.beforeRouteEnter.call(wrapper.vm, { query: { fmgPage: "vehicle-damage" } }, undefined, (c) => c(wrapper.vm)); + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); //Assert apiPromise.finally(() => { - expect(funnelHeader.methods.initializeComponent).toHaveBeenCalledWith(SiteHeaderWidget); + expect(funnelHeader.methods.initializeComponent).toHaveBeenCalledWith( + SiteHeaderWidget + ); done(); }); }); @@ -72,20 +88,28 @@ describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => { test("Vehicle image is initailized with api data", async (done) => { - //Arrange const VehicleBannerWidget = { GenericVehicleImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3", - } - const { wrapper, apiPromise } = setupMocks({ VehicleBannerWidget: VehicleBannerWidget }); + }; + const { wrapper, apiPromise } = setupMocks({ + VehicleBannerWidget: VehicleBannerWidget, + }); //Act - vehicleDamage.beforeRouteEnter.call(wrapper.vm, { query: { fmgPage: "vehicle-damage" } }, undefined, (c) => c(wrapper.vm)); + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); //Assert apiPromise.finally(() => { - expect(vehicleBanner.methods.initializeComponent).toHaveBeenCalledWith(VehicleBannerWidget); + expect(vehicleBanner.methods.initializeComponent).toHaveBeenCalledWith( + VehicleBannerWidget + ); done(); }); }); @@ -93,12 +117,16 @@ describe("vehicle-damage.vue", () => { describe("vehicle-damage.vue", () => { test("CarId set, arePagePrerequisitesValid should be true ", async () => { - //Arrange const { wrapper } = setupMocks({}); //Act - vehicleDamage.beforeRouteEnter.call(wrapper.vm, { query: { fmgPage: "vehicle-damage" } }, undefined, (c) => c(wrapper.vm)); + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); await nextTick(); @@ -112,27 +140,26 @@ function setupMocks({ pageHeaderWidgetHeaderText = {}, mountOptionsMockData = {}, }) { - //Mock api responses baseMixin.methods.dispatchNonBlockingStoreAction = jest.fn(); baseMixin.methods.dispatchNonBlockingStoreAction.mockImplementation(() => { - return Promise.resolve({ data: ['Front Window', 'Back Window', 'Side Window'] }); + return Promise.resolve({ + data: ["Front Window", "Back Window", "Side Window"], + }); }); const apiResponses = { cmsContent: { FunnelSubHeaderWidget: pageHeaderWidgetHeaderText, - VehicleBannerWidget: - { + VehicleBannerWidget: { GenericVehicleImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/blurred-image.jpg?sfvrsn=a6ce3034_3", }, - FunnelHeaderWidget: - { + FunnelHeaderWidget: { LogoImage: "https://digitalconsumercms-dev.safelite.com/images/default-source/default-album/safelite-logo.svg?sfvrsn=45e7ed06_3", }, }, - damageOptions: ['Front Window', 'Back Window', 'Side Window'], + damageOptions: ["Front Window", "Back Window", "Side Window"], }; const apiPromise = Promise.resolve(apiResponses); @@ -157,13 +184,18 @@ function setupMocks({ const wrapper = shallowMount(vehicleDamage, mountOptions); const funnelHeaderWrapper = wrapper.findComponent({ name: "funnelHeader" }); - funnelHeaderWrapper.vm.initializeComponent = funnelHeader.methods.initializeComponent; + funnelHeaderWrapper.vm.initializeComponent = + funnelHeader.methods.initializeComponent; const vehicleBannerWrapper = wrapper.findComponent({ name: "vehicleBanner" }); - vehicleBannerWrapper.vm.initializeComponent = vehicleBanner.methods.initializeComponent; + vehicleBannerWrapper.vm.initializeComponent = + vehicleBanner.methods.initializeComponent; - const funnelSubHeaderWrapper = wrapper.findComponent({ name: "funnelSubHeader" }); - funnelSubHeaderWrapper.vm.initializeComponent = funnelSubHeader.methods.initializeComponent; + const funnelSubHeaderWrapper = wrapper.findComponent({ + name: "funnelSubHeader", + }); + funnelSubHeaderWrapper.vm.initializeComponent = + funnelSubHeader.methods.initializeComponent; return { wrapper, apiPromise }; -} \ No newline at end of file +} diff --git a/src/layouts/vehicle-make/make-question/make-question.spec.js b/src/layouts/vehicle-make/make-question/make-question.spec.js index 6a811459f..469be6d24 100644 --- a/src/layouts/vehicle-make/make-question/make-question.spec.js +++ b/src/layouts/vehicle-make/make-question/make-question.spec.js @@ -2,11 +2,16 @@ import makeQuestion from "@/layouts/vehicle-make/make-question/make-question"; import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import store from "@/store"; -jest.mock("@/store", () => { return {}; }, {virtual: true}); +jest.mock( + "@/store", + () => { + return {}; + }, + { virtual: true } +); describe("make-question.vue", () => { test("Selected make is emitted upon selection.", async () => { - //Arrange const { wrapper } = setupMocks({ modelValueProp: "honda" }); const makeToSelect = "ford"; @@ -16,51 +21,65 @@ describe("make-question.vue", () => { await wrapper.vm.$nextTick(); //Assert - expect(wrapper.emitted()["update:modelValue"][0]).toEqual([{selectedMake: "ford"}]); + expect(wrapper.emitted()["update:modelValue"][0]).toEqual([ + { selectedMake: "ford" }, + ]); }); }); describe("make-question.vue", () => { test("CMS question text is used as radio question text.", async () => { - //Arrange - const { wrapper, cmsContent } = setupMocks({ cmsQuestionText: "What make is your vehicle?" }); + const { wrapper, cmsContent } = setupMocks({ + cmsQuestionText: "What make is your vehicle?", + }); //Act makeQuestion.methods.initializeComponent.call(wrapper.vm, cmsContent, null); //Assert - const buttonQuestionComponent = await wrapper.findComponent({ name: "buttonQuestion" }); - expect(buttonQuestionComponent.attributes("questiontext")).toBe("What make is your vehicle?"); + const buttonQuestionComponent = await wrapper.findComponent({ + name: "buttonQuestion", + }); + expect(buttonQuestionComponent.attributes("questiontext")).toBe( + "What make is your vehicle?" + ); }); }); describe("make-question.vue", () => { test("Data from store api are used as radio question answers.", async () => { - //Arrange - const { wrapper, cmsContent } = setupMocks({ dataFromStoreApi: ["honda", "ford", "dodge"] }); + const { wrapper, cmsContent } = setupMocks({ + dataFromStoreApi: ["honda", "ford", "dodge"], + }); //Act const initialData = makeQuestion.methods.loadInitialData.call(wrapper.vm); - makeQuestion.methods.initializeComponent.call(wrapper.vm, cmsContent, initialData); + makeQuestion.methods.initializeComponent.call( + wrapper.vm, + cmsContent, + initialData + ); //Assert - const buttonQuestionComponent = await wrapper.findComponent({ name: "buttonQuestion" }); - expect(buttonQuestionComponent.attributes("answers")).toBe("honda,ford,dodge"); + const buttonQuestionComponent = await wrapper.findComponent({ + name: "buttonQuestion", + }); + expect(buttonQuestionComponent.attributes("answers")).toBe( + "honda,ford,dodge" + ); }); }); - function setupMocks({ modelValueProp = "1900", cmsQuestionText = "CMS text goes here", dataFromStoreApi = [], }) { - //Mock store store.dispatch = jest.fn(() => dataFromStoreApi); - store.getters = { vehicle: {year: 2019} }; + store.getters = { vehicle: { year: 2019 } }; const mountOptions = getMountOptions({ store: { dispatch: store.dispatch, @@ -76,7 +95,7 @@ function setupMocks({ //Mock CMS content const cmsContent = { - QuestionText: cmsQuestionText - }; + QuestionText: cmsQuestionText, + }; return { wrapper, cmsContent }; -} \ No newline at end of file +} diff --git a/src/layouts/vehicle-make/make-question/make-question.vue b/src/layouts/vehicle-make/make-question/make-question.vue index 0276f1a67..2a94deafe 100644 --- a/src/layouts/vehicle-make/make-question/make-question.vue +++ b/src/layouts/vehicle-make/make-question/make-question.vue @@ -1,5 +1,6 @@