-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathvitest.setup.ts
More file actions
74 lines (61 loc) · 1.95 KB
/
vitest.setup.ts
File metadata and controls
74 lines (61 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { mockNuxtImport } from '@nuxt/test-utils/runtime';
import { config, RouterLinkStub } from '@vue/test-utils';
import { vi } from 'vitest';
import { intersectionObserverMock } from '@/test/intersectionObserverMock';
intersectionObserverMock([
{
isIntersecting: true,
} as never,
]);
globalThis.MutationObserver = vi.fn().mockImplementation(function () {
return {
disconnect: vi.fn(),
observe: vi.fn(),
};
});
mockNuxtImport('callOnce', () => {
return <T>(cb: () => T) => {
cb();
};
});
vi.mock('crypto-js/md5', () => ({
default: vi.fn().mockReturnValue('MD5'),
}));
mockNuxtImport('useAPI', () => () => ({
fetchData: vi.fn(() => ({
data: null,
})),
getDownloadUrl: vi.fn((path) => path),
getImageUrl: vi.fn((path) => path),
getStreamUrl: vi.fn((path) => path),
}));
mockNuxtImport('debounce', () => {
return <T extends (...args: unknown[]) => unknown>(cb: T) => {
const debounced = (...args: Parameters<T>) => cb(...args);
debounced.cancel = () => {};
return debounced;
};
});
mockNuxtImport('useId', () => () => Math.random().toString(36).substring(2));
config.global.stubs = {
RouterLink: RouterLinkStub,
teleport: true,
};
vi.stubGlobal('defineEventHandler', (func: unknown) => func);
vi.stubGlobal('getQuery', () => ({ id: 'id' }));
// Assign $fetch directly on globalThis (not via vi.stubGlobal) so that it
// survives vitest's per-file cleanup. Nuxt's payload.client plugin schedules
// `setTimeout(getAppManifest, 1e3)` which fires *after* the test file is torn
// down, and vi.stubGlobal values are restored (removed) at that point.
if (!globalThis.$fetch) {
const fetchFn = (..._args: unknown[]) => Promise.resolve({});
globalThis.$fetch = Object.assign(fetchFn, {
create: () =>
Object.assign((..._args: unknown[]) => Promise.resolve({}), {
create:
() =>
(..._args: unknown[]) =>
Promise.resolve({}),
}),
}) as typeof globalThis.$fetch;
}