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.
mail-yubao/tests/unit/mail-attachment-select.test.ts

51 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 {
selectAttachments,
type SampleFile,
} from "@/services/sample/mail-attachment-select";
function f(name: string): SampleFile {
return { abs: `/x/${name}`, filename: name, rel: name };
}
describe("selectAttachments", () => {
it("mail2: packing_xlsx picks MATU 卡派 xlsx, skips screenshot", () => {
const files = [
f("2邮箱.pdf"),
f("柜号:MATU2745683卡派资料.xlsx"),
];
const picked = selectAttachments(files, "packing_xlsx", ["MATU2745683"]);
expect(picked).toHaveLength(1);
expect(picked[0].filename).toContain("MATU2745683");
});
it("mail3: business takes 卡转海 PDFs, skips 3邮箱.pdf", () => {
const files = [
f("3邮箱.pdf"),
f("WL103276-SBD1(1).pdf"),
f("WL99583-LAX9.pdf"),
];
const picked = selectAttachments(files, "business");
expect(picked.map((x) => x.filename).sort()).toEqual([
"WL103276-SBD1(1).pdf",
"WL99583-LAX9.pdf",
]);
});
it("mail4: label_instruction prefers xlsx then instruction PDFs", () => {
const files = [
f("4邮箱.pdf"),
f("FBA19HW52S0L-76CTN-HIA1-覆盖贴1箱贴2张.pdf"),
f("YT2604021091=76件换标走HIA1卡派出库操作指令.xlsx"),
];
const picked = selectAttachments(files, "label_instruction");
expect(picked[0].filename).toMatch(/\.xlsx$/i);
expect(picked.some((x) => x.filename.includes("覆盖贴"))).toBe(true);
expect(picked.every((x) => !/邮箱\.pdf$/i.test(x.filename))).toBe(true);
});
it("none returns empty", () => {
expect(selectAttachments([f("a.xlsx")], "none")).toEqual([]);
});
});