diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js
new file mode 100644
index 00000000..3d7d7d26
--- /dev/null
+++ b/src/layouts/welcome-page/welcome-page.spec.js
@@ -0,0 +1,92 @@
+import welcomePage from "@/layouts/welcome-page/welcome-page.vue";
+
+// Supporting files
+// Supporting files
+import { shallowMount } from '@vue/test-utils';
+import { settleAllPromises } from "@/helpers/layout-helper.js";
+import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
+import baseMixin from "@/mixins/base-mixin.js";
+import { getMountOptions } from "@/helpers/unit-test-helper.js";
+import { applicationConfig } from "@/constants/application-config";
+
+// Mock our module for promises.
+jest.mock("@/helpers/layout-helper.js", () => ({
+ settleAllPromises: jest.fn(),
+}));
+
+// Mock fetchCmsContentForPage
+jest.mock("@/helpers/cms-content-helper", () => ({
+ fetchCmsContentForPage: jest.fn(),
+}));
+
+
+describe("welcome-page.vue", () => {
+ test("Should render welcomePage sub-components (policyNumber, policyZipCode, dateOfLoss, damageCause etc.)", async () => {
+ // Arrange
+ const { wrapper } = setupMocks({});
+ // Act
+ const policyNumber = wrapper.findComponent({ ref: "policyNumber" });
+ const dateOfLoss = wrapper.findComponent({ ref: "dateOfLoss" });
+ const damageCause = wrapper.findComponent({ ref: "damageCause" });
+ const damageCity = wrapper.findComponent({ ref: "damageCity" });
+ const state = wrapper.findComponent({ ref: "state" });
+ const glassOnlyDamage = wrapper.findComponent({ ref: "glassOnlyDamage" });
+ const phoneNumber = wrapper.findComponent({ ref: "phoneNumber" });
+ const email = wrapper.findComponent({ ref: "email" });
+
+
+ // Assert
+ expect(policyNumber.exists()).toBe(true);
+ expect(dateOfLoss.exists()).toBe(true);
+ expect(damageCause.exists()).toBe(true);
+ expect(damageCity.exists()).toBe(true);
+ expect(state.exists()).toBe(true);
+ expect(glassOnlyDamage.exists()).toBe(true);
+ expect(phoneNumber.exists()).toBe(true);
+ expect(email.exists()).toBe(true);
+ });
+});
+
+function setupMocks({
+ pageHeaderWidgetHeaderText = {},
+ pageFooterWidgetCmsContent = {},
+ mountOptionsMockData = {},
+}) {
+ //Mock api responses
+ const apiResponses = {
+ cmsContent: {
+ SiteSubHeaderWidget: pageHeaderWidgetHeaderText,
+ VehicleBannerWidget: {
+ GenericVehicleImage:
+ `${applicationConfig.ISS_DEV_CMS_DOMAIN}/images/default-source/default-album/blurred-image.jpg`,
+ },
+ SiteHeaderWidget: {
+ LogoImage:
+ `${applicationConfig.ISS_DEV_CMS_DOMAIN}/images/default-source/default-album/logos/insuranceLogo.jpg`,
+ },
+ SiteFooterWidget: pageFooterWidgetCmsContent,
+
+ },
+ };
+
+ mountOptionsMockData = {
+ ...mountOptionsMockData,
+ router: {
+ navigate: jest.fn(),
+ },
+ };
+
+ const apiPromise = Promise.resolve(apiResponses);
+
+ settleAllPromises.mockImplementation(() => apiPromise);
+ fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
+
+ const mountOptions = getMountOptions(mountOptionsMockData);
+
+ const wrapper = shallowMount(welcomePage, mountOptions);
+
+ wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent;
+
+ return { wrapper, apiPromise };
+}
+
diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue
index a727d734..3a7d069b 100644
--- a/src/layouts/welcome-page/welcome-page.vue
+++ b/src/layouts/welcome-page/welcome-page.vue
@@ -9,8 +9,9 @@
@@ -20,9 +21,10 @@
@@ -63,7 +66,7 @@
@@ -90,9 +94,10 @@
@@ -102,7 +107,8 @@
@@ -168,23 +174,18 @@
export default {
name: "welcome-page",
mixins: [BaseFormMixin],
- data: {
- modelValue: {
- type: Object,
- default: () => ({
- welcomePageModel: {
- policyNumber: "",
- policyZipCode: "",
- dateOfLoss: "",
- damageCause: "",
- damageState: "",
- damageCity: "",
- isDamageGlassOnly: "",
- phoneNumber: "",
- email: ""
- },
- }),
- },
+ data() {
+ return {
+ policyNumber: "",
+ policyZipCode: "",
+ dateOfLoss: "",
+ damageCause: "",
+ damageState: "",
+ damageCity: "",
+ isDamageGlassOnly: "",
+ phoneNumber: "",
+ email: ""
+ };
},
async beforeRouteEnter(to, from, next)
{
@@ -220,9 +221,12 @@
DamageCauseOptions() {
const damageCauseAnswers = this.getCmsContent("DamageCauseQuestion", "Answers");
const answerArray = [];
- for (let answer of Object.values(damageCauseAnswers)) {
- if (answer?.Name) {
- answerArray.push(answer.Name);
+ if(damageCauseAnswers)
+ {
+ for (let answer of Object.values(damageCauseAnswers)) {
+ if (answer?.Name) {
+ answerArray.push(answer.Name);
+ }
}
}
return answerArray;