import { describe, expect, it, vi } from "vitest";
import type { Page } from "playwright";
import { AxelSelectionBridge } from "@/workers/rpa/axel-selection-bridge";
import { commitViaAxelPlacePrefetch } from "@/workers/rpa/axel-place-prefetch";

describe("commitViaAxelPlacePrefetch", () => {
  it("GET 200 但 fill 回退不合成 commit", async () => {
    const bridge = new AxelSelectionBridge();
    const page = {
      context: () => ({
        cookies: vi.fn().mockResolvedValue([]),
        request: {
          get: vi.fn().mockResolvedValue({
            status: () => 200,
            ok: () => true,
            json: async () => ({
              placeId: "ChIJ_test_place_id_00",
              city: "LA",
            }),
          }),
        },
      }),
      evaluate: vi.fn().mockResolvedValue(false),
      keyboard: { press: vi.fn().mockResolvedValue(undefined) },
      waitForTimeout: vi.fn().mockResolvedValue(undefined),
    } as unknown as Page;
    const input = {
      click: vi.fn().mockResolvedValue(undefined),
      fill: vi.fn().mockResolvedValue(undefined),
    };

    const result = await commitViaAxelPlacePrefetch(
      page,
      bridge,
      "ChIJ_test_place_id_00",
      "1234 Warehouse Street, Los Angeles, CA, USA",
      input as never,
    );

    expect(result.ok).toBe(false);
    expect(result.location).toBeTruthy();
    expect(bridge.hasPlaceCommit("ChIJ_test_place_id_00")).toBe(false);
  });
});
