run npm install to generate a package lock
This commit is contained in:
82
node_modules/@weborigami/async-tree/test/operations/keyFunctionsForExtensions.test.js
generated
vendored
Normal file
82
node_modules/@weborigami/async-tree/test/operations/keyFunctionsForExtensions.test.js
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
import assert from "node:assert";
|
||||
import { describe, test } from "node:test";
|
||||
import { ObjectTree, Tree } from "../../src/internal.js";
|
||||
import keyFunctionsForExtensions from "../../src/operations/keyFunctionsForExtensions.js";
|
||||
import map from "../../src/operations/map.js";
|
||||
|
||||
describe("keyMapsForExtensions", () => {
|
||||
test("returns key functions that pass a matching key through", async () => {
|
||||
const { inverseKey, key } = keyFunctionsForExtensions({
|
||||
sourceExtension: ".txt",
|
||||
});
|
||||
assert.equal(await inverseKey("file.txt"), "file.txt");
|
||||
assert.equal(await inverseKey("file.txt/"), "file.txt");
|
||||
assert.equal(await key("file.txt"), "file.txt");
|
||||
assert.equal(await key("file.txt/"), "file.txt/");
|
||||
assert.equal(await inverseKey("file.foo"), undefined);
|
||||
assert.equal(await key("file.foo"), undefined);
|
||||
});
|
||||
|
||||
test("returns key functions that can map extensions", async () => {
|
||||
const { inverseKey, key } = keyFunctionsForExtensions({
|
||||
resultExtension: ".json",
|
||||
sourceExtension: ".md",
|
||||
});
|
||||
assert.equal(await inverseKey("file.json"), "file.md");
|
||||
assert.equal(await inverseKey("file.json/"), "file.md");
|
||||
assert.equal(await key("file.md"), "file.json");
|
||||
assert.equal(await key("file.md/"), "file.json/");
|
||||
assert.equal(await inverseKey("file.foo"), undefined);
|
||||
assert.equal(await key("file.foo"), undefined);
|
||||
});
|
||||
|
||||
test("key functions can handle a slash as an explicit extension", async () => {
|
||||
const { inverseKey, key } = keyFunctionsForExtensions({
|
||||
resultExtension: ".html",
|
||||
sourceExtension: "/",
|
||||
});
|
||||
assert.equal(await inverseKey("file.html"), "file/");
|
||||
assert.equal(await inverseKey("file.html/"), "file/");
|
||||
assert.equal(await key("file"), undefined);
|
||||
assert.equal(await key("file/"), "file.html");
|
||||
});
|
||||
|
||||
test("works with map to handle keys that end in a given resultExtension", async () => {
|
||||
const files = new ObjectTree({
|
||||
"file1.txt": "will be mapped",
|
||||
file2: "won't be mapped",
|
||||
"file3.foo": "won't be mapped",
|
||||
});
|
||||
const { inverseKey, key } = keyFunctionsForExtensions({
|
||||
sourceExtension: ".txt",
|
||||
});
|
||||
const fixture = map(files, {
|
||||
inverseKey,
|
||||
key,
|
||||
value: (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
|
||||
});
|
||||
assert.deepEqual(await Tree.plain(fixture), {
|
||||
"file1.txt": "WILL BE MAPPED",
|
||||
});
|
||||
});
|
||||
|
||||
test("works with map to change a key's resultExtension", async () => {
|
||||
const files = new ObjectTree({
|
||||
"file1.txt": "will be mapped",
|
||||
file2: "won't be mapped",
|
||||
"file3.foo": "won't be mapped",
|
||||
});
|
||||
const { inverseKey, key } = keyFunctionsForExtensions({
|
||||
resultExtension: ".upper",
|
||||
sourceExtension: ".txt",
|
||||
});
|
||||
const fixture = map(files, {
|
||||
inverseKey,
|
||||
key,
|
||||
value: (sourceValue, sourceKey, tree) => sourceValue.toUpperCase(),
|
||||
});
|
||||
assert.deepEqual(await Tree.plain(fixture), {
|
||||
"file1.upper": "WILL BE MAPPED",
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user