import { readFileSync } from 'node:fs';
import { join } from 'node:path';

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

function readSource(workspaceRelativePath: string): string {
  const absolutePath = join(process.cwd(), workspaceRelativePath);
  return readFileSync(absolutePath, 'utf8');
}

describe('events v2 no-legacy runtime guard', () => {
  it('keeps handlers/events free of legacy event registries and fuzzy answer matching', () => {
    const source = readSource('src/handlers/events.ts');

    expect(source.includes('(allEvents as Record<string, unknown>)')).toBe(false);
    expect(source.includes('classBasedEvents.find')).toBe(false);
    expect(source.includes('acceptIndicators')).toBe(false);
    expect(source.includes('declineIndicators')).toBe(false);
  });

  it('keeps stats_manager legacy pollers inert', () => {
    const source = readSource('src/stats/stats_manager.ts');

    expect(source.includes('player.activeDilemmas')).toBe(false);
    expect(source.includes('Object.entries(allEvents)')).toBe(false);
    expect(source.includes('classBasedEvents')).toBe(false);
    expect(source.includes('getApplicableEvents')).toBe(false);
  });

  it('keeps test AutoResponder free of allEvents dispatch', () => {
    const source = readSource('src/testing/AutoResponder.ts');

    expect(source.includes('allEvents')).toBe(false);
    expect(source.includes("eventFn(player, 'answer'")).toBe(false);
  });
});
