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.
23 lines
814 B
23 lines
814 B
import { describe, expect, it } from "vitest";
|
|
import AdmZip from "adm-zip";
|
|
import { extractSpreadsheetFromZip } from "@/services/parse/zip-extract";
|
|
|
|
describe("zip-extract", () => {
|
|
it("extracts one-layer xlsx", () => {
|
|
const zip = new AdmZip();
|
|
zip.addFile("卡派资料.xlsx", Buffer.from("fake-xlsx"));
|
|
const res = extractSpreadsheetFromZip(zip.toBuffer());
|
|
expect(res.errorCode).toBeUndefined();
|
|
expect(res.files[0].filename).toBe("卡派资料.xlsx");
|
|
});
|
|
|
|
it("ignores nested zip", () => {
|
|
const inner = new AdmZip();
|
|
inner.addFile("a.xlsx", Buffer.from("x"));
|
|
const outer = new AdmZip();
|
|
outer.addFile("nested.zip", inner.toBuffer());
|
|
const res = extractSpreadsheetFromZip(outer.toBuffer());
|
|
expect(res.warnings).toContain("zip.nested_ignored");
|
|
});
|
|
});
|