diff --git a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.spec.js b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.spec.js index fe0827be8..689231780 100644 --- a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.spec.js +++ b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.spec.js @@ -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); diff --git a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue index 1f20a8006..6fedf581b 100644 --- a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue +++ b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue @@ -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: {