331 lines
9.0 KiB
JavaScript
331 lines
9.0 KiB
JavaScript
import test from "ava";
|
||
import md from "markdown-it";
|
||
import TemplateConfig from "../src/TemplateConfig";
|
||
import eleventyConfig from "../src/EleventyConfig";
|
||
|
||
test("Template Config local config overrides base config", async t => {
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
|
||
t.is(cfg.markdownTemplateEngine, "ejs");
|
||
t.is(cfg.templateFormats.join(","), "md,njk");
|
||
|
||
// merged, not overwritten
|
||
t.true(Object.keys(cfg.keys).length > 1);
|
||
t.truthy(Object.keys(cfg.handlebarsHelpers).length);
|
||
t.truthy(Object.keys(cfg.nunjucksFilters).length);
|
||
|
||
t.is(Object.keys(cfg.filters).length, 1);
|
||
|
||
t.is(
|
||
cfg.filters.prettyHtml(
|
||
`<html><body><div></div></body></html>`,
|
||
"test.html"
|
||
),
|
||
`<html>
|
||
<body>
|
||
<div></div>
|
||
</body>
|
||
</html>`
|
||
);
|
||
});
|
||
|
||
test("Add liquid tag", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addLiquidTag("myTagName", function() {});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.liquidTags).indexOf("myTagName"), -1);
|
||
});
|
||
|
||
test("Add nunjucks tag", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addNunjucksTag("myNunjucksTag", function() {});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksTags).indexOf("myNunjucksTag"), -1);
|
||
});
|
||
|
||
test("Add liquid filter", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addLiquidFilter("myFilterName", function(liquidEngine) {
|
||
return {};
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.liquidFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test("Add handlebars helper", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addHandlebarsHelper("myHelperName", function() {});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.handlebarsHelpers).indexOf("myHelperName"), -1);
|
||
});
|
||
|
||
test("Add nunjucks filter", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test("Add universal filter", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addFilter("myFilterName", function() {});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.liquidFilters).indexOf("myFilterName"), -1);
|
||
t.not(Object.keys(cfg.handlebarsHelpers).indexOf("myFilterName"), -1);
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test("Add namespaced universal filter", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace("testNamespace", function() {
|
||
eleventyConfig.addFilter("MyFilterName", function() {});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(
|
||
Object.keys(cfg.liquidFilters).indexOf("testNamespaceMyFilterName"),
|
||
-1
|
||
);
|
||
t.not(
|
||
Object.keys(cfg.handlebarsHelpers).indexOf("testNamespaceMyFilterName"),
|
||
-1
|
||
);
|
||
t.not(
|
||
Object.keys(cfg.nunjucksFilters).indexOf("testNamespaceMyFilterName"),
|
||
-1
|
||
);
|
||
});
|
||
|
||
test("Add namespaced universal filter using underscore", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace("testNamespace_", function() {
|
||
eleventyConfig.addFilter("myFilterName", function() {});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(
|
||
Object.keys(cfg.liquidFilters).indexOf("testNamespace_myFilterName"),
|
||
-1
|
||
);
|
||
t.not(
|
||
Object.keys(cfg.handlebarsHelpers).indexOf("testNamespace_myFilterName"),
|
||
-1
|
||
);
|
||
t.not(
|
||
Object.keys(cfg.nunjucksFilters).indexOf("testNamespace_myFilterName"),
|
||
-1
|
||
);
|
||
});
|
||
|
||
test("Empty namespace", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace("", function() {
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test("Nested Empty Inner namespace", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace("testNs", function() {
|
||
eleventyConfig.namespace("", function() {
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("testNsmyFilterName"), -1);
|
||
});
|
||
|
||
test("Nested Empty Outer namespace", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace("", function() {
|
||
eleventyConfig.namespace("testNs", function() {
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("testNsmyFilterName"), -1);
|
||
});
|
||
|
||
// important for backwards compatibility with old
|
||
// `module.exports = function (eleventyConfig, pluginNamespace) {`
|
||
// plugin code
|
||
test("Non-string namespaces are ignored", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.namespace(["lkdsjflksd"], function() {
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test(".addPlugin oddity: I don’t think pluginNamespace was ever passed in here, but we don’t want this to break", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.addPlugin(function(eleventyConfig, pluginNamespace) {
|
||
eleventyConfig.namespace(pluginNamespace, () => {
|
||
eleventyConfig.addNunjucksFilter("myFilterName", function() {});
|
||
});
|
||
});
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.not(Object.keys(cfg.nunjucksFilters).indexOf("myFilterName"), -1);
|
||
});
|
||
|
||
test("Test url universal filter with custom pathPrefix (no slash)", t => {
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
templateCfg.setPathPrefix("/testdirectory/");
|
||
let cfg = templateCfg.getConfig();
|
||
t.is(cfg.pathPrefix, "/testdirectory/");
|
||
});
|
||
|
||
test("setTemplateFormats(string)", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.setTemplateFormats("ejs,njk, liquid");
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.deepEqual(cfg.templateFormats, ["ejs", "njk", "liquid"]);
|
||
});
|
||
|
||
test("setTemplateFormats(array)", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.setTemplateFormats(["ejs", "njk", "liquid"]);
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.deepEqual(cfg.templateFormats, ["ejs", "njk", "liquid"]);
|
||
});
|
||
|
||
test("setTemplateFormats(array, size 1)", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.setTemplateFormats(["liquid"]);
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.deepEqual(cfg.templateFormats, ["liquid"]);
|
||
});
|
||
|
||
test("setTemplateFormats(empty array)", t => {
|
||
eleventyConfig.reset();
|
||
eleventyConfig.setTemplateFormats([]);
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.deepEqual(cfg.templateFormats, []);
|
||
});
|
||
|
||
test("libraryOverrides", t => {
|
||
let mdLib = md();
|
||
eleventyConfig.setLibrary("md", mdLib);
|
||
|
||
let templateCfg = new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config.js"
|
||
);
|
||
let cfg = templateCfg.getConfig();
|
||
t.falsy(cfg.libraryOverrides.ldkja);
|
||
t.falsy(cfg.libraryOverrides.njk);
|
||
t.truthy(cfg.libraryOverrides.md);
|
||
t.deepEqual(mdLib, cfg.libraryOverrides.md);
|
||
});
|
||
|
||
test("Properly throws error on missing module #182", t => {
|
||
t.throws(function() {
|
||
new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/broken-config.js"
|
||
);
|
||
});
|
||
});
|
||
|
||
test("Properly throws error when config returns a Promise", t => {
|
||
t.throws(function() {
|
||
new TemplateConfig(
|
||
require("../config.js"),
|
||
"./test/stubs/config-promise.js"
|
||
);
|
||
});
|
||
});
|