import { describe, expect, it } from "vitest";
import { resolveFamilyKind } from "@ema-platform/api";
import { hasUnclaimedPool, savedViewsForFamily } from "./queue-views";

describe("resolveFamilyKind", () => {
  it("treats person-centric seafarer applications as document queues", () => {
    expect(resolveFamilyKind("SEAFARER_REGISTRATION")).toBe("DOCUMENT");
    expect(resolveFamilyKind("SEAMAN_BOOK")).toBe("DOCUMENT");
    expect(resolveFamilyKind("BTC_BASIC_TRAINING")).toBe("CERTIFICATE");
  });
});

describe("hasUnclaimedPool", () => {
  it("keeps the unassigned pool for logistics licences", () => {
    expect(hasUnclaimedPool("FREIGHT_FORWARDER")).toBe(true);
  });

  it("keeps it for vessel registration, a DOCUMENT queue that is still claimed", () => {
    expect(resolveFamilyKind("VESSEL_REGISTRATION")).toBe("DOCUMENT");
    expect(hasUnclaimedPool("VESSEL_REGISTRATION")).toBe(true);
    expect(savedViewsForFamily(hasUnclaimedPool("VESSEL_REGISTRATION")).map((v) => v.id)).toContain(
      "unassigned",
    );
  });

  it("drops it for the person-centric services", () => {
    expect(hasUnclaimedPool("SEAMAN_BOOK")).toBe(false);
    expect(savedViewsForFamily(hasUnclaimedPool("SEAMAN_BOOK")).map((v) => v.id)).not.toContain(
      "unassigned",
    );
  });

  it("keeps it for the mixed All/Mine grids, where no type is pinned", () => {
    expect(hasUnclaimedPool(undefined)).toBe(true);
  });
});
