parent
597db2547b
commit
d70d3735b3
12 changed files with 14 additions and 85 deletions
|
|
@ -8,7 +8,6 @@ const experimentSettings = {
|
||||||
DISPLAY_AVAILABILITY_INDICATORS: "DisplayAvailabilityIndicators",
|
DISPLAY_AVAILABILITY_INDICATORS: "DisplayAvailabilityIndicators",
|
||||||
PIA_EXPERIENCE: "PIA Experience",
|
PIA_EXPERIENCE: "PIA Experience",
|
||||||
SUBMIT_ORDER_ENABLE_PIA: "SubmitOrder_Enable_PIA",
|
SUBMIT_ORDER_ENABLE_PIA: "SubmitOrder_Enable_PIA",
|
||||||
IS_EMAIL_OPTIONAL: "isEmailOptional",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const experimentTriggers = {
|
const experimentTriggers = {
|
||||||
|
|
|
||||||
|
|
@ -125,10 +125,6 @@ export default {
|
||||||
hideInput: Boolean,
|
hideInput: Boolean,
|
||||||
centerErrorMessage: Boolean,
|
centerErrorMessage: Boolean,
|
||||||
keyDownHandler: Function,
|
keyDownHandler: Function,
|
||||||
isEmailOptional: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
const uuid = uuidv4();
|
const uuid = uuidv4();
|
||||||
|
|
@ -206,9 +202,7 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
questionText() {
|
questionText() {
|
||||||
return this.isEmailOptional
|
return this.getCmsContent(this.cmsWidgetName, "QuestionText");
|
||||||
? this.getCmsContent(this.cmsWidgetName, "QuestionText") + " (optional)"
|
|
||||||
: this.getCmsContent(this.cmsWidgetName, "QuestionText");
|
|
||||||
},
|
},
|
||||||
value: {
|
value: {
|
||||||
get: function () {
|
get: function () {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import { storeMutations } from "@/constants/store-mutations";
|
||||||
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios";
|
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
|
||||||
|
|
||||||
jest.mock("@/helpers/damage-helper", () => ({
|
jest.mock("@/helpers/damage-helper", () => ({
|
||||||
isGlassAvailableForCarId: jest.fn().mockImplementation(() => true),
|
isGlassAvailableForCarId: jest.fn().mockImplementation(() => true),
|
||||||
|
|
@ -642,17 +641,6 @@ describe("address-lookup.vue", () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const mockMixin = {
|
|
||||||
methods: {
|
|
||||||
getSettingValue: jest.fn((settingName) => {
|
|
||||||
if (settingName === experimentSettings.IS_EMAIL_OPTIONAL) {
|
|
||||||
return "true";
|
|
||||||
}
|
|
||||||
return "false";
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function setupMocks({
|
function setupMocks({
|
||||||
isZipValid = true,
|
isZipValid = true,
|
||||||
isZipServiceable = true,
|
isZipServiceable = true,
|
||||||
|
|
@ -721,7 +709,6 @@ function setupMocks({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mixins: [mockMixin],
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,7 @@
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" ref="funnelSubHeader" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" ref="funnelSubHeader" />
|
||||||
|
|
||||||
<customerQuestions
|
<customerQuestions ref="customerQuestions" v-model="customerQuestions" />
|
||||||
ref="customerQuestions"
|
|
||||||
v-model="customerQuestions"
|
|
||||||
:validationRules="EmailValidationRules"
|
|
||||||
:isEmailOptional="IsEmailOptional" />
|
|
||||||
|
|
||||||
<alert
|
<alert
|
||||||
ref="alertVinNotFound"
|
ref="alertVinNotFound"
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,7 @@
|
||||||
v-model="customerModel.emailAddress"
|
v-model="customerModel.emailAddress"
|
||||||
ref="emailAddress"
|
ref="emailAddress"
|
||||||
customInputId="emailAddress"
|
customInputId="emailAddress"
|
||||||
:isRequired="!isEmailOptional"
|
validationRules="email-address-required|email-address-format" />
|
||||||
:validationRules="validationRules"
|
|
||||||
:isEmailOptional="isEmailOptional" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-0">
|
<div class="row mb-0">
|
||||||
|
|
@ -81,7 +79,6 @@ export default {
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
validationRules: String,
|
validationRules: String,
|
||||||
isEmailOptional: Boolean,
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
customerModel: {
|
customerModel: {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import { settleAllPromises } from "@/helpers/layout-helper.js";
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
import baseMixin from "../../mixins/base-mixin";
|
import baseMixin from "../../mixins/base-mixin";
|
||||||
import { vinLookupMethodSelections } from "@/constants/vin-lookup-method-selections.js";
|
import { vinLookupMethodSelections } from "@/constants/vin-lookup-method-selections.js";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
|
||||||
// Mock our module for promises.
|
// Mock our module for promises.
|
||||||
jest.mock("@/helpers/layout-helper.js", () => ({
|
jest.mock("@/helpers/layout-helper.js", () => ({
|
||||||
settleAllPromises: jest.fn(),
|
settleAllPromises: jest.fn(),
|
||||||
|
|
@ -273,24 +273,12 @@ function setupMocks({
|
||||||
Answers: cmsAnswers,
|
Answers: cmsAnswers,
|
||||||
FunnelFooterWidget: FunnelFooterWidget,
|
FunnelFooterWidget: FunnelFooterWidget,
|
||||||
};
|
};
|
||||||
const mockMixin = {
|
|
||||||
methods: {
|
|
||||||
getSettingValue: jest.fn((settingName) => {
|
|
||||||
if (settingName === experimentSettings.IS_EMAIL_OPTIONAL) {
|
|
||||||
return "true";
|
|
||||||
}
|
|
||||||
return "false";
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const apiPromise = Promise.resolve({ cmsContent });
|
const apiPromise = Promise.resolve({ cmsContent });
|
||||||
settleAllPromises.mockImplementation(() => apiPromise);
|
settleAllPromises.mockImplementation(() => apiPromise);
|
||||||
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
|
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
|
||||||
|
|
||||||
const mountOptions = getMountOptions({
|
const mountOptions = getMountOptions({ ...mountOptionsMockData, mixins: [baseMixin] });
|
||||||
...mountOptionsMockData,
|
|
||||||
mixins: [baseMixin, mockMixin],
|
|
||||||
});
|
|
||||||
mountOptions["attachTo"] = document.body;
|
mountOptions["attachTo"] = document.body;
|
||||||
|
|
||||||
const wrapper = shallowMount(estimate, mountOptions);
|
const wrapper = shallowMount(estimate, mountOptions);
|
||||||
|
|
@ -298,5 +286,6 @@ function setupMocks({
|
||||||
wrapper.vm.getZipCodeData = jest
|
wrapper.vm.getZipCodeData = jest
|
||||||
.fn()
|
.fn()
|
||||||
.mockReturnValue({ isValid: true, isServiceable: true, state: "OH" });
|
.mockReturnValue({ isValid: true, isServiceable: true, state: "OH" });
|
||||||
|
|
||||||
return { wrapper, apiPromise };
|
return { wrapper, apiPromise };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,10 +52,9 @@
|
||||||
cmsWidgetName="EmailAddressQuestionWidget"
|
cmsWidgetName="EmailAddressQuestionWidget"
|
||||||
v-model="emailAddress"
|
v-model="emailAddress"
|
||||||
inputId="emailAddress"
|
inputId="emailAddress"
|
||||||
:isRequired="!IsEmailOptional"
|
isRequired
|
||||||
disableAutoFill
|
disableAutoFill
|
||||||
:validationRules="EmailValidationRules"
|
validationRules="email-address-required|email-address-format" />
|
||||||
:isEmailOptional="IsEmailOptional" />
|
|
||||||
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
||||||
|
|
||||||
<alert
|
<alert
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import { nextTick } from "vue";
|
||||||
import { storeActions } from "@/constants/store-actions";
|
import { storeActions } from "@/constants/store-actions";
|
||||||
import { storeMutations } from "@/constants/store-mutations";
|
import { storeMutations } from "@/constants/store-mutations";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
|
||||||
|
|
||||||
jest.mock("@/assets/img/loader.gif", () => "loader.gif");
|
jest.mock("@/assets/img/loader.gif", () => "loader.gif");
|
||||||
jest.mock("@/assets/img/windshield.png", () => "windshield.png");
|
jest.mock("@/assets/img/windshield.png", () => "windshield.png");
|
||||||
|
|
@ -692,22 +691,12 @@ function setupMocks({
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const mockMixin = {
|
|
||||||
methods: {
|
|
||||||
getSettingValue: jest.fn((settingName) => {
|
|
||||||
if (settingName === experimentSettings.IS_EMAIL_OPTIONAL) {
|
|
||||||
return "true";
|
|
||||||
}
|
|
||||||
return "false";
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const apiPromise = Promise.resolve(apiResponses);
|
const apiPromise = Promise.resolve(apiResponses);
|
||||||
|
|
||||||
settleAllPromises.mockImplementation(() => apiPromise);
|
settleAllPromises.mockImplementation(() => apiPromise);
|
||||||
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
|
fetchCmsContentForPage.mockImplementation(() => Promise.resolve());
|
||||||
|
|
||||||
const mountOptions = getMountOptions({ ...mountOptionsMockData, mixins: [mockMixin] });
|
const mountOptions = getMountOptions(mountOptionsMockData);
|
||||||
mountOptions["attachTo"] = document.body; // append wrapper to document.body to test DOM methods
|
mountOptions["attachTo"] = document.body; // append wrapper to document.body to test DOM methods
|
||||||
|
|
||||||
const wrapper = shallowMount(licensePlateLookup, mountOptions);
|
const wrapper = shallowMount(licensePlateLookup, mountOptions);
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,7 @@
|
||||||
cmsWidgetName="EmailAddressQuestionWidget"
|
cmsWidgetName="EmailAddressQuestionWidget"
|
||||||
v-model="email"
|
v-model="email"
|
||||||
customInputId="email"
|
customInputId="email"
|
||||||
:isRequired="!IsEmailOptional"
|
validationRules="email-address-required|email-address-format" />
|
||||||
:validationRules="EmailValidationRules"
|
|
||||||
:isEmailOptional="IsEmailOptional" />
|
|
||||||
|
|
||||||
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import vinLookup from "./vin-lookup.vue";
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios.js";
|
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios.js";
|
||||||
import { settleAllPromises } from "@/helpers/layout-helper.js";
|
import { settleAllPromises } from "@/helpers/layout-helper.js";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
|
||||||
|
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
|
|
||||||
|
|
@ -379,11 +378,5 @@ function mockOutStubFunctions(wrapper) {
|
||||||
const mockMixin = {
|
const mockMixin = {
|
||||||
methods: {
|
methods: {
|
||||||
getCmsContent: jest.fn(() => "placeholder CMS content"),
|
getCmsContent: jest.fn(() => "placeholder CMS content"),
|
||||||
getSettingValue: jest.fn((settingName) => {
|
|
||||||
if (settingName === experimentSettings.IS_EMAIL_OPTIONAL) {
|
|
||||||
return "true";
|
|
||||||
}
|
|
||||||
return "false";
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,8 @@
|
||||||
cmsWidgetName="EmailAddressQuestionWidget"
|
cmsWidgetName="EmailAddressQuestionWidget"
|
||||||
v-model="emailAddress"
|
v-model="emailAddress"
|
||||||
customInputId="emailAddress"
|
customInputId="emailAddress"
|
||||||
:isRequired="!IsEmailOptional"
|
isRequired
|
||||||
:validationRules="EmailValidationRules"
|
validationRules="email-address-required|email-address-format" />
|
||||||
:isEmailOptional="IsEmailOptional" />
|
|
||||||
|
|
||||||
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
<textBlock cmsWidgetName="QuoteEmailTextBlockWidget" typeStyle="caption" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,8 @@ import { storeActions } from "@/constants/store-actions.js";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
|
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
|
||||||
import { saveSession } from "@/helpers/heritage-integration/order-helper.js";
|
import { saveSession } from "@/helpers/heritage-integration/order-helper.js";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
|
||||||
IsEmailOptional() {
|
|
||||||
const emailOptional = this.getSettingValue(experimentSettings.IS_EMAIL_OPTIONAL);
|
|
||||||
return emailOptional === "true";
|
|
||||||
},
|
|
||||||
EmailValidationRules() {
|
|
||||||
return this.IsEmailOptional
|
|
||||||
? "email-address-format"
|
|
||||||
: "email-address-required|email-address-format";
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
async navigateForwardWithSingleCarMatch() {
|
async navigateForwardWithSingleCarMatch() {
|
||||||
const pageName = this.$options?.name;
|
const pageName = this.$options?.name;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue