import { describe, expect, test } from "bun:test";
import { createLandqStateAdapter } from "./landq-state";

describe("createLandqStateAdapter", () => {
  test("emits one panel keyed by adapter id, no items, honest empty state", async () => {
    const adapter = createLandqStateAdapter({
      landqStateOptions: {
        repoRoots: ["/repo"],
        existsSyncImpl: () => false,
        readFileImpl: () => {
          throw new Error("should not read");
        },
      },
    });
    const result = await adapter.poll();
    expect(result.items).toEqual([]);
    expect(result.panels).toHaveLength(1);
    expect(result.panels[0]!.id).toBe("landq-state");
    expect(result.panels[0]!.data).toEqual({
      repos: [
        {
          repoRoot: "/repo",
          project: "repo",
          status: "absent",
          queueDepth: 0,
          waiting: [],
          waitingComplete: true,
          conductorHeld: null,
          conductorHolderPid: null,
          conductorHolderAgeSeconds: null,
          conductorComplete: true,
        },
      ],
    });
  });

  test("id and interval are overridable", () => {
    const adapter = createLandqStateAdapter({ id: "custom", interval: 1234 });
    expect(adapter.id).toBe("custom");
    expect(adapter.interval).toBe(1234);
  });
});
