Skip to content

Commit

Permalink
Additional tests and cleanup for #2111
Browse files Browse the repository at this point in the history
  • Loading branch information
zachleat committed May 10, 2022
1 parent bf79be5 commit 1ac289a
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 102 deletions.
1 change: 1 addition & 0 deletions src/Template.js
Expand Up @@ -985,6 +985,7 @@ class Template extends TemplateContent {
} else {
let filepathRegex = this.inputPath.match(/(\d{4}-\d{2}-\d{2})/);
if (filepathRegex !== null) {
// if multiple are found in the path, use the first one for the date
let dateObj = DateTime.fromISO(filepathRegex[1], {
zone: "utc",
}).toJSDate();
Expand Down
6 changes: 4 additions & 2 deletions src/TemplateFileSlug.js
Expand Up @@ -18,12 +18,13 @@ class TemplateFileSlug {
this.filenameNoExt = extensionMap.removeTemplateExtension(this.parsed.base);
}

// `page.filePathStem` see https://www.11ty.dev/docs/data-eleventy-supplied/#page-variable
getFullPathWithoutExtension() {
return "/" + TemplatePath.join(...this.dirs, this._getRawSlug());
}

_getRawSlug() {
const slug = this.filenameNoExt;
let slug = this.filenameNoExt;
return this._stripDateFromSlug(slug);
}

Expand All @@ -36,14 +37,15 @@ class TemplateFileSlug {
return slug;
}

// `page.fileSlug` see https://www.11ty.dev/docs/data-eleventy-supplied/#page-variable
getSlug() {
let rawSlug = this._getRawSlug();

if (rawSlug === "index") {
if (!this.dirs.length) {
return "";
}
const lastDir = this.dirs[this.dirs.length - 1];
let lastDir = this.dirs[this.dirs.length - 1];
return this._stripDateFromSlug(lastDir);
}

Expand Down
125 changes: 125 additions & 0 deletions test/TemplateTest-Dates.js
@@ -0,0 +1,125 @@
const test = require("ava");
const getNewTemplate = require("./_getNewTemplateForTests");

async function getRenderedData(tmpl, pageNumber = 0) {
let data = await tmpl.getData();
let templates = await tmpl.getTemplates(data);
return templates[pageNumber].data;
}

test("getMappedDate (empty, assume created)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file1.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (explicit date, yaml String)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file2.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
t.is(Date.UTC(2016, 0, 1), date.getTime());
});

test("getMappedDate (explicit date, yaml Date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file2b.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
t.is(Date.UTC(2016, 0, 1), date.getTime());
});

test("getMappedDate (explicit date, yaml Date and string should be the same)", async (t) => {
let tmplA = getNewTemplate(
"./test/stubs/dates/file2.md",
"./test/stubs/",
"./dist"
);
let dataA = await getRenderedData(tmplA);
let stringDate = await tmplA.getMappedDate(dataA);

let tmplB = getNewTemplate(
"./test/stubs/dates/file2b.md",
"./test/stubs/",
"./dist"
);
let dataB = await getRenderedData(tmplB);
let yamlDate = await tmplB.getMappedDate(dataB);

t.truthy(stringDate);
t.truthy(yamlDate);
t.deepEqual(stringDate, yamlDate);
});

test("getMappedDate (modified date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file3.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (created date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file4.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (falls back to filename date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/2018-01-01-file5.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
t.is(Date.UTC(2018, 0, 1), date.getTime());
});

test("getMappedDate (found multiple dates, picks first)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/2019-01-01-folder/2020-01-01-file.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
t.is(Date.UTC(2019, 0, 1), date.getTime());
});
100 changes: 0 additions & 100 deletions test/TemplateTest.js
Expand Up @@ -630,106 +630,6 @@ test("Clone the template", async (t) => {
t.is(cloned.extensionMap, tmpl.extensionMap);
});

test("getMappedDate (empty, assume created)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file1.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (explicit date, yaml String)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file2.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (explicit date, yaml Date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file2b.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (explicit date, yaml Date and string should be the same)", async (t) => {
let tmplA = getNewTemplate(
"./test/stubs/dates/file2.md",
"./test/stubs/",
"./dist"
);
let dataA = await getRenderedData(tmplA);
let stringDate = await tmplA.getMappedDate(dataA);

let tmplB = getNewTemplate(
"./test/stubs/dates/file2b.md",
"./test/stubs/",
"./dist"
);
let dataB = await getRenderedData(tmplB);
let yamlDate = await tmplB.getMappedDate(dataB);

t.truthy(stringDate);
t.truthy(yamlDate);
t.deepEqual(stringDate, yamlDate);
});

test("getMappedDate (modified date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file3.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (created date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/file4.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getMappedDate (falls back to filename date)", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/dates/2018-01-01-file5.md",
"./test/stubs/",
"./dist"
);
let data = await getRenderedData(tmpl);
let date = await tmpl.getMappedDate(data);

t.true(date instanceof Date);
t.truthy(date.getTime());
});

test("getRenderedData() has all the page variables", async (t) => {
let tmpl = getNewTemplate(
"./test/stubs/template.ejs",
Expand Down
2 changes: 2 additions & 0 deletions test/stubs/dates/2019-01-01-folder/2020-01-01-file.md
@@ -0,0 +1,2 @@
---
---

0 comments on commit 1ac289a

Please sign in to comment.