-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathjest.setup.ts
More file actions
100 lines (94 loc) · 2.64 KB
/
jest.setup.ts
File metadata and controls
100 lines (94 loc) · 2.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
/// <reference types="@testing-library/jest-dom" />
import '@testing-library/jest-dom'
// Mock HTMLCanvasElement.getContext
HTMLCanvasElement.prototype.getContext = jest.fn().mockReturnValue({
fillRect: jest.fn(),
clearRect: jest.fn(),
getImageData: jest.fn(() => ({ data: [] })),
putImageData: jest.fn(),
createImageData: jest.fn(() => []),
setTransform: jest.fn(),
drawImage: jest.fn(),
save: jest.fn(),
fillText: jest.fn(),
restore: jest.fn(),
beginPath: jest.fn(),
moveTo: jest.fn(),
lineTo: jest.fn(),
closePath: jest.fn(),
stroke: jest.fn(),
translate: jest.fn(),
scale: jest.fn(),
rotate: jest.fn(),
arc: jest.fn(),
fill: jest.fn(),
measureText: jest.fn(() => ({ width: 0 })),
transform: jest.fn(),
rect: jest.fn(),
clip: jest.fn(),
canvas: {
height: 768,
width: 1366
}
})
// Mock window.matchMedia
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation((query) => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(),
removeListener: jest.fn(),
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn()
}))
})
// Mock ResizeObserver
global.ResizeObserver = jest.fn().mockImplementation(() => ({
observe: jest.fn(),
unobserve: jest.fn(),
disconnect: jest.fn()
}))
// Mock WebSocket
const WebSocketMock = jest.fn().mockImplementation(() => ({
send: jest.fn(),
close: jest.fn(),
addEventListener: jest.fn(),
removeEventListener: jest.fn()
})) as jest.Mock & {
readonly CONNECTING: 0
readonly OPEN: 1
readonly CLOSING: 2
readonly CLOSED: 3
}
Object.defineProperty(WebSocketMock, 'CONNECTING', { value: 0 })
Object.defineProperty(WebSocketMock, 'OPEN', { value: 1 })
Object.defineProperty(WebSocketMock, 'CLOSING', { value: 2 })
Object.defineProperty(WebSocketMock, 'CLOSED', { value: 3 })
global.WebSocket = WebSocketMock as unknown as typeof WebSocket
// Mock FileReader
const FileReaderMock = jest.fn().mockImplementation(() => ({
readAsArrayBuffer: jest.fn(),
readAsText: jest.fn(),
result: null,
onload: null,
onerror: null
})) as jest.Mock & {
readonly EMPTY: 0
readonly LOADING: 1
readonly DONE: 2
}
Object.defineProperty(FileReaderMock, 'EMPTY', { value: 0 })
Object.defineProperty(FileReaderMock, 'LOADING', { value: 1 })
Object.defineProperty(FileReaderMock, 'DONE', { value: 2 })
global.FileReader = FileReaderMock as unknown as typeof FileReader
// Mock navigator.clipboard
Object.defineProperty(navigator, 'clipboard', {
value: {
writeText: jest.fn().mockResolvedValue(undefined),
readText: jest.fn().mockResolvedValue('')
},
writable: true
})