import { shallowMount } from '@vue/test-utils'; // eslint-disable-next-line max-len import windshieldChipCountQuestion from '@/layouts/vehicle-damage/windshield-options/windshield-chip-count-question/windshield-chip-count-question.vue'; import { getMountOptions } from '@/helpers/unit-test-helper.js'; /** @ignore */ function setupMocks({ modelValueProp = ['Two'], groupName = 'WindshieldChipCountQuestion', cmsQuestionText = 'How many chips are we repairing?', cmsAnswers = [{ Name: 'One' }, { Name: 'Two' }, { Name: 'Three' }], dataFromStoreApi = [] }) { const mountOptions = getMountOptions({ }); // Mock props const mockMixin = { methods: { getCmsContent: jest.fn() } }; mountOptions.propsData = { modelValue: modelValueProp }; mountOptions.mixins = [mockMixin]; const wrapper = shallowMount(windshieldChipCountQuestion, mountOptions); // Mock CMS content const cmsContent = { groupName, QuestionText: cmsQuestionText, Answers: cmsAnswers }; const damageOptions = dataFromStoreApi; return { wrapper, cmsContent, damageOptions }; } describe('windshield-chip-count-question.vue', () => { test('Selected chip count is emitted upon selection.', async () => { // Arrange const { wrapper } = setupMocks({ modelValueProp: 1 }); // Act wrapper.vm.selectedValue = '2'; // Assert expect(wrapper.emitted()['update:modelValue'][0]).toEqual([2]); }); test('selectedValue matches modelValue', () => { // Arrange/Act const { wrapper } = setupMocks({ modelValueProp: 2 }); // Assert expect(wrapper.vm.selectedValue).toBe(2); }); });