import { describe, expect, it } from 'vitest';
import { buildSportsResultsRecapPrompt, type SportsResultsRecapRow } from '../sports-results-recap-prompt';

const sample: SportsResultsRecapRow[] = [
  {
    league: 'nba',
    homeTeam: 'Los Angeles Lakers',
    awayTeam: 'Phoenix Suns',
    winnerPick: 'Los Angeles Lakers',
    outcome: 'win',
    actualWinner: 'Los Angeles Lakers',
    actualScore: '108-114',
    settledAt: '2026-04-14T02:10:00.000Z',
  },
  {
    league: 'nba',
    homeTeam: 'Boston Celtics',
    awayTeam: 'Miami Heat',
    winnerPick: 'Boston Celtics',
    outcome: 'loss',
    actualWinner: 'Miami Heat',
    actualScore: '107-101',
    settledAt: '2026-04-14T01:40:00.000Z',
  },
  {
    league: 'nba',
    homeTeam: 'Denver Nuggets',
    awayTeam: 'Minnesota Timberwolves',
    winnerPick: 'Denver Nuggets',
    outcome: 'win',
    actualWinner: 'Denver Nuggets',
    actualScore: '99-112',
    settledAt: '2026-04-13T23:40:00.000Z',
  },
];

describe('buildSportsResultsRecapPrompt', () => {
  it('builds recap clip prompts capped at eight seconds with honest result framing', () => {
    const result = buildSportsResultsRecapPrompt(sample, {
      clipSeconds: 12,
      clipCount: 4,
      recapDate: '2026-04-14',
    });

    expect(result.sport).toBe('basketball');
    expect(result.record).toEqual({ wins: 2, losses: 1, total: 3, winPct: 67 });
    expect(result.clips).toHaveLength(4);
    expect(result.clips.every((clip) => clip.durationSeconds <= 8)).toBe(true);
    expect(result.prompt).toContain('Recap date: 2026-04-14');
    expect(result.prompt).toContain('Los Angeles Lakers');
    expect(result.prompt).toContain('Boston Celtics');
    expect(result.prompt).toContain('own the misses');
  });
});
