var assert = require("assert"); var JSZip = require("jszip"); var test = require("./test")(module); var zipfile = require("../lib/zipfile"); test('file in zip can be read after being written', function() { var zip = emptyZipFile(); assert(!zip.exists("song/title")); zip.write("song/title", "Dark Blue"); assert(zip.exists("song/title")); return zip.read("song/title", "utf8").then(function(contents) { assert.equal(contents, "Dark Blue"); }); }); test('leading slash in path is stripped if set when reading', function() { var zip = emptyZipFile(); assert(!zip.exists("/song/title")); zip.write("song/title", "Dark Blue"); assert(zip.exists("/song/title")); return zip.read("/song/title", "utf8").then(function(contents) { assert.equal(contents, "Dark Blue"); }); }); test('leading slash in path is stripped if set when writing', function() { var zip = emptyZipFile(); assert(!zip.exists("song/title")); zip.write("/song/title", "Dark Blue"); assert(zip.exists("song/title")); return zip.read("song/title", "utf8").then(function(contents) { assert.equal(contents, "Dark Blue"); }); }); function emptyZipFile() { var zip = new JSZip(); var buffer = zip.generate({type: "arraybuffer"}); return zipfile.openArrayBuffer(buffer); } test("joinZipPath", { "joins relative path to base using forward slash": function() { assert.equal( zipfile.joinZipPath("one/two", "three/four"), "one/two/three/four" ) }, "joining base to absolute path ignores base": function() { assert.equal( zipfile.joinZipPath("one/two", "/three/four"), "/three/four" ) } });