/* eslint-env jest */ import { mount, flushPromises } from '@vue/test-utils'; import { createTestingPinia } from '@pinia/testing'; import { navigationScenarios } from '@/router/router-constants/navigation-scenarios'; import { routerParams } from '@/router/router-params'; import { vehicleCategories } from '@/constants/vehicle-categories'; import VehicleDamageComponent from './vehicle-damage.vue'; const mockRoute = { params: {}, }; const mockRouter = { navigate: jest.fn(), }; const mountOptions = { global: { mixins: [ { computed: { navigationScenarios() { return navigationScenarios; }, routerParams() { return routerParams; }, vehicleCategories() { return vehicleCategories; }, }, methods: { getCmsContent: jest.fn(), getFooterInfoBoxHeight: jest.fn(() => 80), getPageNameByQueryString: jest.fn(() => ''), }, }, ], mocks: { $route: mockRoute, $router: mockRouter, }, stubs: { siteHeader: true, vehicleBanner: true, siteSubHeader: true, siteDoorOptions: true, damageLocationQuestion: true, windshieldOptions: true, replaceOptionsQuestion: true, alert: true, }, }, }; beforeEach(() => { jest.clearAllMocks(); }); describe('vehicle-damage.vue', () => { test('When damage selected is a repair, navigate to coverage-statement page', async () => { mountOptions.global.plugins = [createTestingPinia({ initialState: { main: { order: { damage: { isRepair: true, }, }, }, }, })]; const wrapper = mount(VehicleDamageComponent, mountOptions); const siteFooterWrapper = wrapper.getComponent({ ref: 'siteFooter' }); siteFooterWrapper.vm.$emit('forwardClicked'); await flushPromises(); expect(mockRouter.navigate).toHaveBeenCalledTimes(1); expect(mockRouter.navigate) .toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_REPAIR, mockRoute, ); }); });