/**
 * 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 };
