import { describe, it, expect } from 'vitest';
import { buildPrompt, PROMPT_VERSION } from '@main/ai/prompt.js';

describe('prompt', () => {
  it('PROMPT_VERSION is 4', () => {
    expect(PROMPT_VERSION).toBe(4);
  });

  it('buildPrompt with empty vocab omits vocabulary line entirely', () => {
    const out = buildPrompt('hello', '2026-05-02', [], []);
    expect(out).not.toContain('vocabulary');
    expect(out).not.toContain('Prefer reusing');
  });

  it('buildPrompt with vocab includes Prefer instruction + comma-separated list', () => {
    const out = buildPrompt('hello', '2026-05-02', [], ['design', 'meeting', 'qa']);
    expect(out).toContain('Existing vocabulary tags');
    expect(out).toContain('design, meeting, qa');
    expect(out).toContain('Prefer reusing');
  });

  it('vocab block appears after header and before JSON rules', () => {
    const out = buildPrompt('hello', '2026-05-02', [], ['design']);
    const headerIdx = out.indexOf("Today's date");
    const vocabIdx = out.indexOf('Existing vocabulary');
    const jsonRulesIdx = out.indexOf('Return a JSON object');
    expect(headerIdx).toBeGreaterThan(-1);
    expect(vocabIdx).toBeGreaterThan(headerIdx);
    expect(jsonRulesIdx).toBeGreaterThan(vocabIdx);
  });
});
