import { describe, expect, it } from "vitest"; import { columnValueFromCell, parseLabeledAddressBlock, parseLabeledCell, } from "@/services/parse/address-block"; const SAMPLE = `仓库代码: LAS1 收件人: LAS1 公司名称: AMAZON COM SERVICES INC 联系电话: 0123456789 省/市/区: NV / HENDERSON / 邮政编码: 89044-8746 收货地址: 12300 Bermuda Road 备注:三票分开打托`; describe("parseLabeledCell", () => { it("takes the home field and still harvests the rest", () => { const p = parseLabeledCell( "仓库代码: LAS1\n收件人: LAS1\n收货地址: 12300 Bermuda Road", ); expect(p?.F_FBACode).toBe("LAS1"); expect(p?.F_Contact).toBe("LAS1"); expect(p?.F_Address).toBe("12300 Bermuda Road"); expect(columnValueFromCell("F_FBACode", SAMPLE)).toBe("LAS1"); expect(columnValueFromCell("F_Address", SAMPLE)).toBe("12300 Bermuda Road"); expect(columnValueFromCell("F_Remark", SAMPLE)).toBe("三票分开打托"); }); it("splits Address 单元格里的中文键值块", () => { const p = parseLabeledAddressBlock(SAMPLE); expect(p).toBeTruthy(); expect(p!.warehouseCode).toBe("LAS1"); expect(p!.contact).toBe("LAS1"); expect(p!.company).toBe("AMAZON COM SERVICES INC"); expect(p!.mobile).toBe("0123456789"); expect(p!.state).toBe("NV"); expect(p!.city).toBe("HENDERSON"); expect(p!.zip).toBe("89044-8746"); expect(p!.street).toBe("12300 Bermuda Road"); expect(p!.remark).toBe("三票分开打托"); }); it("ignores a plain street with no labels", () => { expect(parseLabeledAddressBlock("12924 Pierce St")).toBeNull(); }); it("maps non-standard labels Tel / ADDR / Consignee", () => { const p = parseLabeledCell( "Consignee: Alice\nTel: 12025550123\nZIP: 10001\nStreet: 100 Main Street", ); expect(p?.F_Contact).toBe("Alice"); expect(p?.F_Mobile).toBe("12025550123"); expect(p?.F_ZipCode).toBe("10001"); expect(p?.F_Address).toBe("100 Main Street"); }); it("supports subset and random order", () => { const p = parseLabeledCell("ADDR: 9 Ocean Ave\n电话: 555-0100"); expect(p?.F_Address).toBe("9 Ocean Ave"); expect(p?.F_Mobile).toBe("5550100"); }); });