import { describe, expect, it } from "vitest";
import {
  buildAlertPresentation,
  formatCustomerAddressForAdmin,
  formatSelectedAddressForAdmin,
  resolveAlertRootCause,
} from "@/modules/alert/alert-presentation";

describe("alert-presentation", () => {
  it("区分客户填写地址与联想确认地址", () => {
    const addr = {
      street: "123 Main St",
      city: "Denver",
      state: "CO",
      zip: "80202",
      formatted_address: "123 Main St, Denver, CO",
      mothership_display_label: "123 Main St, Denver, CO 80202, USA",
    };
    expect(formatCustomerAddressForAdmin(addr)).toBe(
      "123 Main St, Denver, CO, 80202",
    );
    expect(formatSelectedAddressForAdmin(addr)).toBe(
      "123 Main St, Denver, CO 80202, USA",
    );
  });

  it("将 browserType.launch 转为可读根因", () => {
    const cause = resolveAlertRootCause("RPA_FAILED", {
      reason: "browserType.launch: Executable doesn't exist",
    });
    expect(cause).toContain("无法启动浏览器");
    expect(cause).not.toContain("{");
  });

  it("buildAlertPresentation 包含客户与货物字段", () => {
    const presentation = buildAlertPresentation(
      "RPA_FAILED",
      { reason: "test", customer_id: "CUST_001" },
      {
        customerId: "CUST_001",
        pickupJson: {
          street: "A",
          city: "B",
          state: "CO",
          zip: "80000",
          mothership_display_label: "A, B, CO",
        },
        deliveryJson: {
          street: "C",
          city: "D",
          state: "MA",
          zip: "02101",
          mothership_display_label: "C, D, MA",
        },
        weightLb: 500,
        palletCount: 2,
        cargoType: "general_freight",
        dimLIn: 48,
        dimWIn: 40,
        dimHIn: 48,
      } as never,
    );
    expect(presentation.customer_id).toBe("CUST_001");
    expect(presentation.pickup_customer).toContain("A");
    expect(presentation.pickup_selected).toBe("A, B, CO");
    expect(presentation.cargo_summary).toContain("2 托");
  });
});
