import { describe, expect, it } from "vitest";
import { getVariableCatalog } from "./catalog.js";

describe("catalog", () => {
  it("lists all fixed variables", () => {
    const catalog = getVariableCatalog();
    const keys = catalog.map((v) => `${v.type}:${v.name}`);

    expect(keys).toContain("system:time");
    expect(keys).toContain("system:date");
    expect(keys).toContain("system:os");
    expect(keys).toContain("system:hostname");
    expect(keys).toContain("prompt:cwd");
    expect(keys).toContain("prompt:model");
    expect(keys).toContain("prompt:conversation_id");
    expect(keys).toContain("git:branch");
    expect(keys).toContain("git:status");
  });

  it("marks the file type as dynamic", () => {
    const fileVar = getVariableCatalog().find((v) => v.type === "file");
    expect(fileVar).toBeDefined();
    expect(fileVar?.dynamic).toBe(true);
  });

  it("every entry has a description", () => {
    for (const v of getVariableCatalog()) {
      expect(v.description.length).toBeGreaterThan(0);
    }
  });
});
