import { installQuasar } from '@quasar/quasar-app-extension-testing-unit-vitest'; import { mount, flushPromises } from '@vue/test-utils'; import { createTestingPinia } from '@pinia/testing'; import { vi } from 'vitest'; import { i18n } from 'src/boot/i18n'; import { Notify, Dialog } from 'quasar'; import axios from 'axios'; installQuasar({ plugins: { Notify, Dialog, }, }); const mockPush = vi.fn(); vi.mock('vue-router', () => ({ useRouter: () => ({ push: mockPush, currentRoute: { value: 'myCurrentRoute' }, }), useRoute: () => ({ matched: [], }), })); export function createWrapper(component, options) { const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false }); const defaultOptions = { global: { plugins: [i18n, pinia], }, }; const mountOptions = Object.assign({}, defaultOptions); if (options instanceof Object) { Object.assign(mountOptions, options); if (options.global) { mountOptions.global.plugins = defaultOptions.global.plugins; } } const wrapper = mount(component, mountOptions); const vm = wrapper.vm; return { vm, wrapper }; } export { axios, flushPromises };