forked from sashin/sashinexists
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import assert from "node:assert";
|
|
import * as fs from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { describe, test } from "node:test";
|
|
import { fileURLToPath } from "node:url";
|
|
import OrigamiFiles from "../../src/runtime/OrigamiFiles.js";
|
|
|
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const tempDirectory = path.join(dirname, "fixtures/temp");
|
|
|
|
describe("OrigamiFiles", () => {
|
|
test("can watch its folder for changes", { timeout: 2000 }, async () => {
|
|
await createTempDirectory();
|
|
const tempFiles = new OrigamiFiles(tempDirectory);
|
|
const changedFileName = await new Promise(async (resolve) => {
|
|
// @ts-ignore
|
|
tempFiles.addEventListener("change", (event) => {
|
|
resolve(/** @type {any} */ (event).options.key);
|
|
});
|
|
// @ts-ignore
|
|
await tempFiles.set(
|
|
"foo.txt",
|
|
"This file is left over from testing and can be removed."
|
|
);
|
|
});
|
|
await removeTempDirectory();
|
|
assert.equal(changedFileName, "foo.txt");
|
|
});
|
|
});
|
|
|
|
async function createTempDirectory() {
|
|
await fs.mkdir(tempDirectory, { recursive: true });
|
|
}
|
|
|
|
async function removeTempDirectory() {
|
|
await fs.rm(tempDirectory, { recursive: true });
|
|
}
|