- Add vitest, @testing-library/react, @vitest/ui, jsdom dependencies - Create vitest.config.ts with jsdom environment and coverage settings - Add tests/setup.ts with localStorage mock and crypto mock - Add tests/gateway/ws-client.test.ts for GatewayClient unit tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
1.0 KiB
TypeScript
51 lines
1.0 KiB
TypeScript
/**
|
|
* Test setup file for Vitest
|
|
* Configure global test environment
|
|
*/
|
|
|
|
import { beforeAll, beforeEach } from 'vitest';
|
|
|
|
// Mock localStorage
|
|
const localStorageMock = (() => {
|
|
let store: Record<string, string> = {};
|
|
return {
|
|
getItem: (key: string) => store[key] || null,
|
|
setItem: (key: string, value: string) => {
|
|
store[key] = value.toString();
|
|
},
|
|
removeItem: (key: string) => {
|
|
delete store[key];
|
|
},
|
|
clear: () => {
|
|
store = {};
|
|
},
|
|
get length() {
|
|
return Object.keys(store).length;
|
|
},
|
|
key: (index: number) => {
|
|
return Object.keys(store)[index] || null;
|
|
},
|
|
};
|
|
})();
|
|
|
|
// Setup global mocks
|
|
beforeAll(() => {
|
|
// Mock crypto.randomUUID if not available
|
|
if (!globalThis.crypto) {
|
|
globalThis.crypto = {
|
|
randomUUID: () => 'test-uuid-1234',
|
|
subtle: {
|
|
digest: async () => new ArrayBuffer(16),
|
|
},
|
|
} as any;
|
|
}
|
|
});
|
|
|
|
// Setup before each test
|
|
beforeEach(() => {
|
|
localStorageMock.clear();
|
|
});
|
|
|
|
// Export for use in tests
|
|
export { localStorageMock };
|