forked from DimensionDev/Maskbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
67 lines (57 loc) · 1.61 KB
/
index.ts
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
import { fetch, Headers, Request, Response } from 'cross-fetch'
import { afterAll, afterEach, beforeAll } from 'vitest'
import { setupServer } from 'msw/node'
import { BundlerHandlers } from './handlers/SmartPayBundler.js'
import { DSearchHandlers } from './handlers/DSearch.js'
// Add `fetch` polyfill.
globalThis.fetch = fetch
globalThis.Headers = Headers
globalThis.Request = Request
globalThis.Response = Response
// @ts-ignore
globalThis.location = {
href: '',
pathname: 'nodejs',
protocol: 'https',
}
globalThis.localStorage = (() => {
const map = new Map()
return {
getItem(key: string) {
return map.get(key)
},
setItem(key: string, value: unknown) {
map.set(key, value)
},
removeItem(key: string) {
map.delete(key)
},
clear() {
map.clear()
},
key(index: number) {
// TODO: implement it when we need it.
return ''
},
get length() {
return map.size
},
}
})()
// Add `navigator` polyfill.
Reflect.set(globalThis, 'navigator', {
userAgent: 'vitest',
language: 'en',
} as Navigator)
// Add `screen` polyfill.
Reflect.set(globalThis, 'screen', {
width: 0,
height: 0,
} as Screen)
const server = setupServer(...BundlerHandlers, ...DSearchHandlers)
// Start server before all tests
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
// Close server after all tests
afterAll(() => server.close())
// Reset handlers after each test `important for test isolation`
afterEach(() => server.resetHandlers())