import { describe, expect, it } from "vitest";
import {
  isCargoStateReady,
  type CargoStateEvidence,
} from "@/workers/rpa/cargo-state";

describe("isCargoStateReady", () => {
  it("hydrating：mounted 但无 interactive → not ready", () => {
    const evidence: CargoStateEvidence = {
      phase: "hydrating",
      mountedCargoFields: [{ placeholder: "需要几个托盘？", ariaLabel: null }],
      interactiveCargoFields: [],
      blockedCargoFields: [
        {
          placeholder: "需要几个托盘？",
          ariaLabel: null,
          blockers: ["pointer_events_none"],
        },
      ],
    };
    expect(isCargoStateReady(evidence)).toBe(false);
  });

  it("仅 interactive 非托盘字段 → not ready", () => {
    const evidence: CargoStateEvidence = {
      phase: "interactive",
      mountedCargoFields: [{ placeholder: "长度", ariaLabel: null }],
      interactiveCargoFields: [{ placeholder: "长度", ariaLabel: null }],
      blockedCargoFields: [],
    };
    expect(isCargoStateReady(evidence)).toBe(false);
  });

  it("托盘 interactive → ready", () => {
    const evidence: CargoStateEvidence = {
      phase: "interactive",
      mountedCargoFields: [{ placeholder: "需要几个托盘？", ariaLabel: null }],
      interactiveCargoFields: [
        { placeholder: "需要几个托盘？", ariaLabel: null },
      ],
      blockedCargoFields: [],
    };
    expect(isCargoStateReady(evidence)).toBe(true);
  });
});
