-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvitest.setup.ts
More file actions
121 lines (106 loc) · 3.64 KB
/
vitest.setup.ts
File metadata and controls
121 lines (106 loc) · 3.64 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import { afterAll, afterEach, beforeAll, vi } from "vitest";
import { cleanup } from "@testing-library/preact";
import "@testing-library/jest-dom/vitest";
// IMPORTANT: vi.mock MUST be at top level - cannot be inside beforeAll or any function
vi.mock("./src/visualBuilder/utils/getEntryPermissionsCached", () => ({
getEntryPermissionsCached: vi.fn().mockResolvedValue({
read: true,
publish: true,
update: true,
delete: true,
}),
}));
vi.mock(
"./src/visualBuilder/utils/fetchEntryPermissionsAndStageDetails",
() => ({
fetchEntryPermissionsAndStageDetails: vi.fn().mockResolvedValue({
acl: {
create: true,
read: true,
update: true,
delete: true,
publish: true,
},
workflowStage: {
stage: undefined,
permissions: {
entry: {
update: true,
},
},
},
resolvedVariantPermissions: {
update: true,
},
}),
})
);
beforeAll(() => {
global.ResizeObserver = vi.fn().mockImplementation(() => ({
observe: vi.fn(),
unobserve: vi.fn(),
disconnect: vi.fn(),
}));
global.MutationObserver = vi.fn().mockImplementation(() => ({
observe: vi.fn(),
disconnect: vi.fn(),
takeRecords: vi.fn(() => []),
}));
document.elementFromPoint = vi.fn();
});
afterAll(() => {
cleanup();
});
// const sideEffects = {
// document: {
// addEventListener: {
// fn: document.addEventListener,
// refs: [],
// },
// keys: Object.keys(document),
// },
// window: {
// addEventListener: {
// fn: window.addEventListener,
// refs: [],
// },
// keys: Object.keys(window),
// },
// };
// // Lifecycle Hooks
// // -----------------------------------------------------------------------------
// beforeAll(async () => {
// // Spy addEventListener
// ['document', 'window'].forEach(obj => {
// const fn = sideEffects[obj].addEventListener.fn;
// const refs = sideEffects[obj].addEventListener.refs;
// function addEventListenerSpy(type, listener, options) {
// // Store listener reference so it can be removed during reset
// refs.push({ type, listener, options });
// // Call original window.addEventListener
// fn(type, listener, options);
// }
// // Add to default key array to prevent removal during reset
// sideEffects[obj].keys.push('addEventListener');
// // Replace addEventListener with mock
// global[obj].addEventListener = addEventListenerSpy;
// });
// });
// // Reset JSDOM. This attempts to remove side effects from tests, however it does
// // not reset all changes made to globals like the window and document
// // objects. Tests requiring a full JSDOM reset should be stored in separate
// // files, which is only way to do a complete JSDOM reset with Jest.
// afterAll(async () => {
// const rootElm = document.documentElement;
// // Remove global listeners and keys
// ['document', 'window'].forEach(obj => {
// const refs = sideEffects[obj].addEventListener.refs;
// // Listeners
// while (refs.length) {
// const { type, listener, options } = refs.pop();
// global[obj].removeEventListener(type, listener, options);
// }
// });
// // Restore base elements
// rootElm.innerHTML = '<head></head><body></body>';
// });