import { beforeEach, describe, expect, it, vi } from 'vitest';

import { createMockApiClient } from '@/__test__/mockApiClient';
import { createMockEventLogger } from '@/utils/testUtils';

vi.mock('web-worker', () => ({
  default: class Worker {
    constructor() {}
    postMessage() {}
    terminate() {}
  },
}));

const testApiClient = createMockApiClient();
const mockEventLogger = createMockEventLogger(testApiClient);

describe('EventLogger', () => {
  beforeEach(() => {
    vi.clearAllMocks();
    mockEventLogger.initialized = true;
    mockEventLogger.identified = false;
  });

  it('tracks events correctly', () => {
    const trackSpy = vi.spyOn(mockEventLogger, 'track');
    const eventName = 'test_event';
    const properties = { key: 'value' };

    mockEventLogger.track(eventName, properties);
    expect(trackSpy).toHaveBeenCalledWith(eventName, properties);
  });

  it('resets the event logger state', () => {
    mockEventLogger.identified = true;
    mockEventLogger.reset();
    expect(mockEventLogger.identified).toBe(false);
  });
});
