mirror of
https://github.com/coleam00/Archon.git
synced 2026-01-01 12:18:41 -05:00
80 lines
1.8 KiB
TypeScript
80 lines
1.8 KiB
TypeScript
import { expect, afterEach, vi } from 'vitest'
|
|
import { cleanup } from '@testing-library/react'
|
|
import '@testing-library/jest-dom/vitest'
|
|
|
|
// Clean up after each test
|
|
afterEach(() => {
|
|
cleanup()
|
|
})
|
|
|
|
// Simple mocks only - fetch and WebSocket
|
|
global.fetch = vi.fn(() =>
|
|
Promise.resolve({
|
|
ok: true,
|
|
json: () => Promise.resolve({}),
|
|
text: () => Promise.resolve(''),
|
|
status: 200,
|
|
} as Response)
|
|
)
|
|
|
|
// Mock WebSocket
|
|
class MockWebSocket {
|
|
onopen: ((event: Event) => void) | null = null
|
|
onclose: ((event: CloseEvent) => void) | null = null
|
|
onerror: ((event: Event) => void) | null = null
|
|
onmessage: ((event: MessageEvent) => void) | null = null
|
|
readyState: number = WebSocket.CONNECTING
|
|
|
|
constructor(public url: string) {
|
|
setTimeout(() => {
|
|
this.readyState = WebSocket.OPEN
|
|
if (this.onopen) {
|
|
this.onopen(new Event('open'))
|
|
}
|
|
}, 0)
|
|
}
|
|
|
|
send() {}
|
|
close() {
|
|
this.readyState = WebSocket.CLOSED
|
|
if (this.onclose) {
|
|
this.onclose(new CloseEvent('close'))
|
|
}
|
|
}
|
|
}
|
|
|
|
window.WebSocket = MockWebSocket as any
|
|
|
|
// Mock localStorage
|
|
const localStorageMock = {
|
|
getItem: vi.fn(() => null),
|
|
setItem: vi.fn(),
|
|
removeItem: vi.fn(),
|
|
clear: vi.fn(),
|
|
}
|
|
Object.defineProperty(window, 'localStorage', {
|
|
value: localStorageMock,
|
|
})
|
|
|
|
// Mock DOM methods that might not exist in test environment
|
|
Element.prototype.scrollIntoView = vi.fn()
|
|
window.HTMLElement.prototype.scrollIntoView = vi.fn()
|
|
|
|
// Mock lucide-react icons - create a proxy that returns icon name for any icon
|
|
vi.mock('lucide-react', () => {
|
|
return new Proxy({}, {
|
|
get: (target, prop) => {
|
|
if (typeof prop === 'string') {
|
|
return () => prop
|
|
}
|
|
return undefined
|
|
}
|
|
})
|
|
})
|
|
|
|
// Mock ResizeObserver
|
|
global.ResizeObserver = vi.fn().mockImplementation(() => ({
|
|
observe: vi.fn(),
|
|
unobserve: vi.fn(),
|
|
disconnect: vi.fn(),
|
|
})) |