You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();
});
});