129 lines
3.1 KiB
JavaScript
129 lines
3.1 KiB
JavaScript
|
import test from "ava";
|
||
|
import fs from "fs-extra";
|
||
|
import TemplatePassthroughManager from "../src/TemplatePassthroughManager";
|
||
|
|
||
|
test("Get paths from Config", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true,
|
||
|
passthroughCopies: {
|
||
|
img: true
|
||
|
}
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getConfigPaths(), [{ inputPath: "./img", outputPath: true }]);
|
||
|
});
|
||
|
|
||
|
test("Empty config paths when disabled in config", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: false,
|
||
|
passthroughCopies: {
|
||
|
img: true
|
||
|
}
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getConfigPaths(), []);
|
||
|
});
|
||
|
|
||
|
test("Get glob paths from config", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true,
|
||
|
passthroughCopies: {
|
||
|
"test/stubs/img": true,
|
||
|
"test/stubs/img/**": "./",
|
||
|
"test/stubs/img/*.js": "./"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getConfigPathGlobs(), [
|
||
|
"./test/stubs/img/**",
|
||
|
"./test/stubs/img/**",
|
||
|
"./test/stubs/img/*.js"
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
test("Get file paths", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getFilePaths(["test.png"]), ["test.png"]);
|
||
|
});
|
||
|
|
||
|
test("Get file paths (filter out real templates)", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getFilePaths(["test.njk"]), []);
|
||
|
});
|
||
|
|
||
|
test("Get file paths (filter out real templates), multiple", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getFilePaths(["test.njk", "test.png"]), ["test.png"]);
|
||
|
});
|
||
|
|
||
|
test("Get file paths with a js file (filter out real templates), multiple", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getFilePaths(["test.njk", "test.js"]), ["test.js"]);
|
||
|
});
|
||
|
|
||
|
test("Get file paths when disabled in config", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: false
|
||
|
});
|
||
|
|
||
|
t.deepEqual(mgr.getFilePaths(["test.png"]), []);
|
||
|
});
|
||
|
|
||
|
test("Naughty paths outside of project dir", async t => {
|
||
|
let mgr = new TemplatePassthroughManager();
|
||
|
mgr.setConfig({
|
||
|
passthroughFileCopy: true,
|
||
|
passthroughCopies: {
|
||
|
"../static": true,
|
||
|
"../*": "./",
|
||
|
"./test/stubs/template-passthrough2/static/*.css": "./",
|
||
|
"./test/stubs/template-passthrough2/static/*.js": "../../",
|
||
|
"./test/stubs/template-passthrough2/img.jpg": "../../"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
await t.throwsAsync(async function() {
|
||
|
for (let path of mgr.getConfigPaths()) {
|
||
|
await mgr.copyPath(path);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const output = [
|
||
|
"./test/stubs/template-passthrough2/_site/static",
|
||
|
"./test/stubs/template-passthrough2/_site/nope.txt",
|
||
|
"./test/stubs/template-passthrough2/_site/nope/",
|
||
|
"./test/stubs/test.js",
|
||
|
"./test/stubs/img.jpg"
|
||
|
];
|
||
|
|
||
|
let results = await Promise.all(
|
||
|
output.map(function(path) {
|
||
|
return fs.exists(path);
|
||
|
})
|
||
|
);
|
||
|
|
||
|
for (let result of results) {
|
||
|
t.false(result);
|
||
|
}
|
||
|
});
|