Merge pull request #3251 from Safelite/feature/CASH-2861

CASH-2861: Pre select single damage option
This commit is contained in:
Chris 2026-07-06 13:10:45 -04:00 committed by GitHub
commit 129eecf265
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 54 additions and 1 deletions

View file

@ -24,6 +24,31 @@ describe("damage-location-question.vue", () => {
expect(wrapper.emitted()["update:modelValue"][0]).toEqual([{ modelValue: ["Backseat"] }]);
});
test("when only one damage location is available, auto-selects it", async () => {
const { wrapper, damageOptions } = setupMocks({
modelValueProp: [],
dataFromStoreApi: {
driverSideOptions: {
availableReplacementOptions: [],
},
passengerSideOptions: {
availableReplacementOptions: [],
},
windshieldOptions: {
availableReplacementOptions: ["Single"],
},
backGlassOptions: {
availableReplacementOptions: [],
},
},
});
damageLocationQuestion.methods.initializeComponent.call(wrapper.vm, damageOptions);
await wrapper.vm.$nextTick();
expect(wrapper.emitted("update:modelValue")[0][0]).toEqual(["Windshield"]);
});
test("Answers to display filtered by data from api.", async () => {
//Arrange
const { wrapper, cmsContent, damageOptions } = setupMocks({
@ -31,6 +56,9 @@ describe("damage-location-question.vue", () => {
driverSideOptions: {
availableReplacementOptions: ["Quarter", "Front"],
},
passengerSideOptions: {
availableReplacementOptions: [],
},
windshieldOptions: {
availableReplacementOptions: ["Single"],
},
@ -51,6 +79,7 @@ describe("damage-location-question.vue", () => {
expect(wrapper.vm.damageOptions).toStrictEqual({
backGlassOptions: { availableReplacementOptions: [] },
driverSideOptions: { availableReplacementOptions: ["Quarter", "Front"] },
passengerSideOptions: { availableReplacementOptions: [] },
windshieldOptions: { availableReplacementOptions: ["Single"] },
});
});
@ -79,7 +108,15 @@ function setupMocks({
//Mock props
const mockMixin = {
methods: {
getCmsContent: jest.fn(),
getCmsContent: jest.fn((widget, key) => {
if (key === "Answers") {
return cmsAnswers;
}
if (key === "QuestionText") {
return cmsQuestionText;
}
return "";
}),
},
};
mountOptions.propsData = {
@ -87,6 +124,16 @@ function setupMocks({
isMultiSelect: isMultiSelect,
};
mountOptions.mixins = [mockMixin];
mountOptions.data = function () {
return {
damageOptions: {
driverSideOptions: { availableReplacementOptions: [] },
passengerSideOptions: { availableReplacementOptions: [] },
windshieldOptions: { availableReplacementOptions: [] },
backGlassOptions: { availableReplacementOptions: [] },
},
};
};
const wrapper = shallowMount(damageLocationQuestion, mountOptions);

View file

@ -37,6 +37,12 @@ export default {
methods: {
initializeComponent(damageOptions) {
this.damageOptions = damageOptions;
this.autoSelectSingleAnswer();
},
autoSelectSingleAnswer() {
if (this.answersToDisplay.length === 1) {
this.selectedValues = [this.answersToDisplay[0].Name];
}
},
},
computed: {