/**
 * Education depth (T10): GPA now matters — a high GPA earns a graduation
 * scholarship; a low GPA forgoes it (opportunity cost).
 */
import { describe, it, expect } from 'vitest';
import { PlayerFactory } from '../../src/testing/PlayerFactory.js';
import { advanceEducation } from '../../src/services/education/education_manager.js';

function gradAt18(gpa: number): any {
  const p: any = PlayerFactory.createAtAge(17);
  p.messageQueue = [];
  p.c.current_education = { id: 'hs-1', gpa };
  p.c.money = 0;
  p.c.diamonds = 0;
  p.c.happiness = 50;
  p.c.ageYears = 18;
  advanceEducation(p);
  return p;
}

describe('GPA-scaled graduation reward', () => {
  it('honors GPA earns a real scholarship (money + diamonds + happiness)', () => {
    const p = gradAt18(95);
    expect(p.c.money).toBeGreaterThan(0);
    expect(p.c.diamonds).toBeGreaterThan(0);
    expect(p.c.happiness).toBeGreaterThan(50);
    expect(p.messageQueue.some((m: string) => /honors|scholarship/i.test(m))).toBe(true);
  });

  it('a low GPA earns no scholarship (opportunity cost)', () => {
    const p = gradAt18(40);
    expect(p.c.money).toBe(0);       // no scholarship money
    expect(p.c.diamonds).toBe(0);    // no scholarship diamonds
    expect(p.messageQueue.some((m: string) => /low GPA/i.test(m))).toBe(true);
  });

  it('a solid GPA gets a happiness bump but no scholarship', () => {
    const p = gradAt18(70);
    expect(p.c.money).toBe(0);
    expect(p.c.happiness).toBeGreaterThan(50);
  });
});
