144 lines
4.3 KiB
JavaScript
144 lines
4.3 KiB
JavaScript
import test from "ava";
|
|
import EleventyExtensionMap from "../src/EleventyExtensionMap";
|
|
|
|
test("Empty formats", t => {
|
|
let map = new EleventyExtensionMap([]);
|
|
t.deepEqual(map.getGlobs("."), []);
|
|
});
|
|
test("Single format", t => {
|
|
let map = new EleventyExtensionMap(["pug"]);
|
|
t.deepEqual(map.getGlobs("."), ["./**/*.pug"]);
|
|
t.deepEqual(map.getGlobs("src"), ["./src/**/*.pug"]);
|
|
});
|
|
test("Multiple formats", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getGlobs("."), ["./**/*.njk", "./**/*.pug"]);
|
|
t.deepEqual(map.getGlobs("src"), ["./src/**/*.njk", "./src/**/*.pug"]);
|
|
});
|
|
|
|
test("Invalid keys are filtered (no passthrough copy)", t => {
|
|
let map = new EleventyExtensionMap(["lksdjfjlsk"]);
|
|
map.config = {
|
|
passthroughFileCopy: false
|
|
};
|
|
t.deepEqual(map.getGlobs("."), []);
|
|
});
|
|
|
|
test("Invalid keys are filtered (using passthrough copy)", t => {
|
|
let map = new EleventyExtensionMap(["lksdjfjlsk"]);
|
|
map.config = {
|
|
passthroughFileCopy: true
|
|
};
|
|
t.deepEqual(map.getGlobs("."), ["./**/*.lksdjfjlsk"]);
|
|
});
|
|
|
|
test("Keys are mapped to lower case", t => {
|
|
let map = new EleventyExtensionMap(["PUG", "NJK"]);
|
|
t.deepEqual(map.getGlobs("."), ["./**/*.pug", "./**/*.njk"]);
|
|
});
|
|
|
|
test("Pruned globs", t => {
|
|
let map = new EleventyExtensionMap(["pug", "njk", "png"]);
|
|
t.deepEqual(map.getPrunedGlobs("."), ["./**/*.png"]);
|
|
});
|
|
|
|
test("Empty path for fileList", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getFileList(), []);
|
|
});
|
|
|
|
test("fileList", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getFileList("filename"), ["filename.njk", "filename.pug"]);
|
|
});
|
|
|
|
test("fileList with dir", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getFileList("filename", "_includes"), [
|
|
"_includes/filename.njk",
|
|
"_includes/filename.pug"
|
|
]);
|
|
});
|
|
|
|
test("fileList with dir in path", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getFileList("layouts/filename"), [
|
|
"layouts/filename.njk",
|
|
"layouts/filename.pug"
|
|
]);
|
|
});
|
|
|
|
test("fileList with dir in path and dir", t => {
|
|
let map = new EleventyExtensionMap(["njk", "pug"]);
|
|
t.deepEqual(map.getFileList("layouts/filename", "_includes"), [
|
|
"_includes/layouts/filename.njk",
|
|
"_includes/layouts/filename.pug"
|
|
]);
|
|
});
|
|
|
|
test("removeTemplateExtension", t => {
|
|
t.is(
|
|
EleventyExtensionMap.removeTemplateExtension("component.njk"),
|
|
"component"
|
|
);
|
|
t.is(
|
|
EleventyExtensionMap.removeTemplateExtension("component.11ty.js"),
|
|
"component"
|
|
);
|
|
|
|
t.is(EleventyExtensionMap.removeTemplateExtension(""), "");
|
|
t.is(EleventyExtensionMap.removeTemplateExtension("component"), "component");
|
|
t.is(
|
|
EleventyExtensionMap.removeTemplateExtension("component.js"),
|
|
"component.js"
|
|
);
|
|
});
|
|
|
|
test("getKey", t => {
|
|
t.is(EleventyExtensionMap.getKey("component.njk"), "njk");
|
|
t.is(EleventyExtensionMap.getKey("component.11ty.js"), "11ty.js");
|
|
t.is(EleventyExtensionMap.getKey("11ty.js"), "11ty.js");
|
|
t.is(EleventyExtensionMap.getKey(".11ty.js"), "11ty.js");
|
|
|
|
t.is(EleventyExtensionMap.getKey("sample.md"), "md");
|
|
|
|
t.is(EleventyExtensionMap.getKey(""), undefined);
|
|
t.is(EleventyExtensionMap.getKey("js"), undefined);
|
|
t.is(EleventyExtensionMap.getKey("component"), undefined);
|
|
t.is(EleventyExtensionMap.getKey("component.js"), undefined);
|
|
});
|
|
|
|
test("Extension aliasing (one format key)", t => {
|
|
let map = new EleventyExtensionMap(["md"]);
|
|
map.config = {
|
|
templateExtensionAliases: {
|
|
markdown: "md",
|
|
nunjucks: "njk" // N/A to current format list
|
|
}
|
|
};
|
|
t.deepEqual(map.getExtensionsFromKey("md"), ["md", "markdown"]);
|
|
t.deepEqual(map.getExtensionsFromKey("njk"), ["njk", "nunjucks"]);
|
|
|
|
// should filter out N/A aliases
|
|
t.deepEqual(map.getGlobs("."), ["./**/*.md", "./**/*.markdown"]);
|
|
});
|
|
|
|
test("Extension aliasing (two format keys)", t => {
|
|
let map = new EleventyExtensionMap(["md", "njk"]);
|
|
map.config = {
|
|
templateExtensionAliases: {
|
|
markdown: "md",
|
|
nunjucks: "njk"
|
|
}
|
|
};
|
|
t.deepEqual(map.getExtensionsFromKey("md"), ["md", "markdown"]);
|
|
t.deepEqual(map.getExtensionsFromKey("njk"), ["njk", "nunjucks"]);
|
|
|
|
t.deepEqual(map.getGlobs("."), [
|
|
"./**/*.md",
|
|
"./**/*.markdown",
|
|
"./**/*.njk",
|
|
"./**/*.nunjucks"
|
|
]);
|
|
});
|