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

import { Player } from '../../../src/models/Player.js';
import { Person } from '../../../src/models/Person.js';
import { createAnswerOption, createDilemma } from '../../../src/events/base.js';
import { checkDilemmas } from '../../../src/stats/stats_manager.js';

function createBasePlayer(): Player {
  return new Player({
    userId: 'char-test',
    character: new Person({
      id: 'char-1',
      firstname: 'Test',
      lastname: 'Player',
      sex: 'Male',
      ageYears: 20,
      ageDays: 20 * 365,
      ageHours: 20 * 365 * 24,
      location: 'school',
      energy: 80,
      happiness: 50,
      social: 50,
      money: 1000,
    }),
    status: 'playing',
    r: [],
  });
}

describe('current dilemma lifecycle characterization', () => {
  it('keeps legacy dilemma polling disabled in tier 3 runtime', () => {
    const player = createBasePlayer();
    const options = [
      createAnswerOption('Take it to vet to scan chip', '', 15),
      createAnswerOption('Post on social media'),
    ];

    const dilemma = createDilemma('foundLostPet', options) as typeof player.activeDilemmas[number] & {
      answer: (typeof options)[number] | null;
    };

    dilemma.answer = options[0];
    player.activeDilemmas = [dilemma];

    const result = checkDilemmas(player);

    expect(result).toBeNull();
    expect(player.activeDilemmas).toHaveLength(1);
    expect((player.activeDilemmas[0] as { answer: unknown }).answer).toBe(options[0]);
  });
});
