Files
factorio-clusterio/test/lib/zip_ops.js
T
Hornwitser a40fefc8d7 Pull findRoot out into libZipOps
The findRoot function useful for managing mod zip files on the master.
2022-08-24 15:42:26 +02:00

50 lines
1.1 KiB
JavaScript

"use strict";
const assert = require("assert").strict;
const JSZip = require("jszip");
const { findRoot } = require("@clusterio/lib/zip_ops");
describe("lib/factorio", function() {
describe("findRoot()", function() {
it("should find the root of a zip", function() {
let zip = new JSZip();
zip.file("root/foo.txt", "");
zip.file("root/bar.txt", "");
assert.equal(findRoot(zip), "root");
});
it("should throw if files are at the root of the zip", function() {
let zip = new JSZip();
zip.file("root/foo.txt", "");
zip.file("bar.txt", "");
assert.throws(
() => findRoot(zip),
new Error("Zip contains file 'bar.txt' in root dir")
);
});
it("should throw if there are multiple root dirs", function() {
let zip = new JSZip();
zip.file("root-1/foo.txt", "");
zip.file("root-2/bar.txt", "");
assert.throws(
() => findRoot(zip),
new Error("Zip contains multiple root folders")
);
});
it("should throw if given an empty zip file", function() {
let zip = new JSZip();
assert.throws(
() => findRoot(zip),
new Error("Empty zip file")
);
});
});
});