UNPKG

kura

Version:

The FileSystem API abstraction library.

291 lines 9.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.testAll = void 0; const FileError_1 = require("../FileError"); const TextConverter_1 = require("../TextConverter"); function testAll(factory, prepare, ignoreDirectoryNotFound = false) { let fs; beforeAll(async () => { if (prepare) { await prepare(); } fs = await factory.requestFileSystemAsync(window.PERSISTENT, Number.MAX_VALUE); }); test("add empty file", async (done) => { try { const fileEntry = await fs.root.getFile("empty.txt", { create: true, exclusive: true, }); expect(fileEntry.name).toBe("empty.txt"); expect(fileEntry.fullPath).toBe("/empty.txt"); expect(fileEntry.isDirectory).toBe(false); expect(fileEntry.isFile).toBe(true); } catch (e) { fail(e); } finally { done(); } }); test("add text file", async (done) => { try { let fileEntry = await fs.root.getFile("test.txt", { create: true, exclusive: true, }); expect(fileEntry.name).toBe("test.txt"); expect(fileEntry.fullPath).toBe("/test.txt"); expect(fileEntry.isDirectory).toBe(false); expect(fileEntry.isFile).toBe(true); await fileEntry.writeFile(new Blob(["hoge"], { type: "text/plain" })); let file = await fileEntry.file(); expect(file.size).toBe(4); const writer = await fileEntry.createWriter(); writer.seek(4); await writer.write(new Blob(["ふが"], { type: "text/plain" })); expect(writer.position).toBe(10); file = await fileEntry.file(); expect(file.size).toBe(10); try { fileEntry = await fs.root.getFile("test.txt", { create: true, exclusive: true, }); fail(`"${fileEntry.fullPath}" has created`); } catch (e) { expect(e).toBeInstanceOf(FileError_1.PathExistsError); } fileEntry = await fs.root.getFile("test.txt"); file = await fileEntry.file(); expect(file.size).toBe(10); const str = await (0, TextConverter_1.toText)(file); expect(str).toBe("hogeふが"); } catch (e) { fail(e); } finally { done(); } }); test("create dir", async (done) => { try { const dirEntry = await fs.root.getDirectory("folder", { create: true, exclusive: true, }); expect(dirEntry.isFile).toBe(false); expect(dirEntry.isDirectory).toBe(true); expect(dirEntry.name).toBe("folder"); } catch (e) { fail(e); } finally { done(); } }); test("create file in the dir", async (done) => { try { const dirEntry = await fs.root.getDirectory("folder"); const fileEntry = await dirEntry.getFile("in.txt", { create: true, exclusive: true, }); expect(fileEntry.fullPath).toBe("/folder/in.txt"); try { await dirEntry.getFile("out.txt"); fail(`"/folder/out.txt" has existed`); } catch (e) { expect(e).toBeInstanceOf(FileError_1.NotFoundError); } const parent = await fileEntry.getParent(); expect(parent.fullPath).toBe(dirEntry.fullPath); expect(parent.name).toBe(dirEntry.name); } catch (e) { fail(e); } finally { done(); } }); test("readdir", async (done) => { try { const reader = fs.root.createReader(); const entries = await reader.readEntries(); let names = ["empty.txt", "test.txt", "folder"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("copy file", async (done) => { try { const test = await fs.root.getFile("test.txt"); const testMeta = await test.getMetadata(); const parent = await test.getParent(); await test.copyTo(parent, "test2.txt"); const test2 = await fs.root.getFile("test2.txt"); const test2Meta = await test2.getMetadata(); expect(test2Meta.size).toBe(testMeta.size); const reader = fs.root.createReader(); const entries = await reader.readEntries(); let names = ["empty.txt", "test.txt", "test2.txt", "folder"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("copy folder", async (done) => { try { const folder = await fs.root.getDirectory("folder"); const parent = await folder.getParent(); const folder1 = (await folder.copyTo(parent, "folder1")); let reader = fs.root.createReader(); let entries = await reader.readEntries(); let names = ["empty.txt", "test.txt", "test2.txt", "folder", "folder1"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); reader = folder1.createReader(); entries = await reader.readEntries(); names = ["in.txt"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("move folder", async (done) => { try { const folder = await fs.root.getDirectory("folder"); const parent = await folder.getParent(); const folder2 = (await folder.moveTo(parent, "folder2")); let reader = fs.root.createReader(); let entries = await reader.readEntries(); let names = ["empty.txt", "test.txt", "test2.txt", "folder1", "folder2"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); reader = folder2.createReader(); entries = await reader.readEntries(); names = ["in.txt"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("remove a file", async (done) => { try { const entry = await fs.root.getFile("empty.txt"); await entry.remove(); try { await fs.root.getFile("empty.txt"); fail(`"${entry.fullPath}" has not been deleted`); } catch (e) { expect(e).toBeInstanceOf(FileError_1.NotFoundError); } const reader = fs.root.createReader(); const entries = await reader.readEntries(); let names = ["test.txt", "test2.txt", "folder1", "folder2"]; for (const entry of entries) { names = names.filter((name) => name !== entry.name); } expect(names.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("remove a not empty folder", async (done) => { try { const entry = await fs.root.getDirectory("folder2"); try { await entry.remove(); fail(`"${entry.fullPath}" has deleted`); } catch (e) { expect(e).toBeInstanceOf(FileError_1.InvalidModificationError); } } catch (e) { fail(e); } finally { done(); } }); test("remove recursively", async (done) => { try { await fs.root.removeRecursively(); const reader = fs.root.createReader(); const entries = await reader.readEntries(); expect(entries.length).toBe(0); } catch (e) { fail(e); } finally { done(); } }); test("get removed folder", async (done) => { try { await fs.root.getDirectory("folder1"); if (!ignoreDirectoryNotFound) { fail(`"/folder1" has existed`); } } catch (e) { if (ignoreDirectoryNotFound) { fail(e); } else { expect(e).toBeInstanceOf(FileError_1.NotFoundError); } } finally { done(); } }); } exports.testAll = testAll; //# sourceMappingURL=filesystem.js.map