54
src/test/setup.ts
Normal file
54
src/test/setup.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import { beforeEach, vi } from 'vitest'
|
||||
|
||||
interface ResizeObserverEntryMock {
|
||||
target: Element
|
||||
contentRect: DOMRectReadOnly
|
||||
}
|
||||
|
||||
type ResizeCallback = (entries: ResizeObserverEntryMock[]) => void
|
||||
|
||||
export const resizeObservers: ResizeObserverMock[] = []
|
||||
|
||||
export class ResizeObserverMock {
|
||||
private target?: Element
|
||||
|
||||
constructor(private readonly callback: ResizeCallback) {
|
||||
resizeObservers.push(this)
|
||||
}
|
||||
|
||||
observe = vi.fn((target: Element) => {
|
||||
this.target = target
|
||||
})
|
||||
|
||||
unobserve = vi.fn()
|
||||
disconnect = vi.fn()
|
||||
|
||||
resize(width: number, height = 400) {
|
||||
if (!this.target) return
|
||||
this.callback([
|
||||
{
|
||||
target: this.target,
|
||||
contentRect: { width, height } as DOMRectReadOnly,
|
||||
},
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
vi.stubGlobal('ResizeObserver', ResizeObserverMock)
|
||||
vi.stubGlobal(
|
||||
'matchMedia',
|
||||
vi.fn((query: string): MediaQueryList => ({
|
||||
matches: false,
|
||||
media: query,
|
||||
onchange: null,
|
||||
addListener: vi.fn(),
|
||||
removeListener: vi.fn(),
|
||||
addEventListener: vi.fn(),
|
||||
removeEventListener: vi.fn(),
|
||||
dispatchEvent: vi.fn(),
|
||||
})),
|
||||
)
|
||||
|
||||
beforeEach(() => {
|
||||
resizeObservers.length = 0
|
||||
})
|
||||
Reference in New Issue
Block a user