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

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