antwar-rss-plugin
Version:
RSS plugin for antwar
173 lines (151 loc) • 5.26 kB
JavaScript
"use strict";
const marked = require("marked");
const moment = require("moment");
const element = require("./element");
const get = {
content: page => page.file.body,
date: page => page.file.attributes.date,
title: page => page.file.attributes.title
};
describe("Element", () => {
it("entries generate xml", () => {
const baseUrl = "http://demo.com/";
const sections = ["demoSection"];
const title = "demo title";
const date = moment("2016-02-21", "YYYY-MM-DD").utcOffset(0).format();
const body = "demo";
const pages = {
demo: {
type: "page",
sectionName: "demoSection",
file: {
attributes: {
date,
title
},
body
}
}
};
const result = element.entries({
baseUrl,
sections,
pages,
get
});
const expected = "<entry>" + "<title>" + title + "</title>" + "<id>ademotitle" + date.toLowerCase() + "</id>" + '<link href="' + baseUrl + 'demo"></link>' + "<updated>" + date + "</updated>" + '<content type="html">' + body + "</content>" + "</entry>";
expect(result).toEqual(expected);
});
it("do not resolve full urls", () => {
const baseUrl = "http://demo.com/";
const sections = ["demoSection"];
const title = "demo title";
const date = moment("2016-02-21", "YYYY-MM-DD").utcOffset(0).format();
const body = marked("#test\n[check out](http://google.com)");
const pages = {
demo: {
type: "page",
sectionName: "demoSection",
file: {
attributes: {
date,
title
},
body
}
}
};
const result = element.entries({
baseUrl,
sections,
pages,
get
});
const expected = "<entry>" + "<title>" + title + "</title>" + "<id>ademotitle" + date.toLowerCase() + "</id>" + '<link href="' + baseUrl + 'demo"></link>' + "<updated>" + date + "</updated>" + '<content type="html">' + "<p>#test\n<a href="http://google.com">check out</a></p>\n" + "</content>" + "</entry>";
expect(result).toEqual(expected);
});
it("entries resolve relative urls against base", () => {
const baseUrl = "http://demo.com/";
const sections = ["demoSection"];
const title = "demo title";
const date = moment("2016-02-21", "YYYY-MM-DD").utcOffset(0).format();
const body = marked("#test\n[check out](../blog/demo-interview)");
const pages = {
demo: {
type: "page",
sectionName: "demoSection",
file: {
attributes: {
date,
title
},
body
}
}
};
const result = element.entries({
baseUrl,
sections,
pages,
get
});
const expected = "<entry>" + "<title>" + title + "</title>" + "<id>ademotitle" + date.toLowerCase() + "</id>" + '<link href="' + baseUrl + 'demo"></link>' + "<updated>" + date + "</updated>" + '<content type="html"><p>#test\n<a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' + "</entry>";
expect(result).toEqual(expected);
});
it("entries resolve absolute urls against base", () => {
const baseUrl = "http://demo.com/";
const sections = ["demoSection"];
const title = "demo title";
const date = moment("2016-02-21", "YYYY-MM-DD").utcOffset(0).format();
const body = marked("#test\n[check out](/blog/demo-interview)");
const pages = {
demo: {
type: "page",
sectionName: "demoSection",
file: {
attributes: {
date,
title
},
body
}
}
};
const result = element.entries({
baseUrl,
sections,
pages,
get
});
const expected = "<entry>" + "<title>" + title + "</title>" + "<id>ademotitle" + date.toLowerCase() + "</id>" + '<link href="' + baseUrl + 'demo"></link>' + "<updated>" + date + "</updated>" + '<content type="html"><p>#test\n<a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' + "</entry>";
expect(result).toEqual(expected);
});
it("entries resolve relative urls against base", () => {
const baseUrl = "http://demo.com/";
const sections = ["blog"];
const title = "demo title";
const date = moment("2016-02-21", "YYYY-MM-DD").utcOffset(0).format();
const body = marked("#test\n[check out](./demo-interview)");
const pages = {
demo: {
type: "page",
sectionName: "blog",
file: {
attributes: {
date,
title
},
body
}
}
};
const result = element.entries({
baseUrl,
sections,
pages,
get
});
const expected = "<entry>" + "<title>" + title + "</title>" + "<id>ademotitle" + date.toLowerCase() + "</id>" + '<link href="' + baseUrl + 'demo"></link>' + "<updated>" + date + "</updated>" + '<content type="html"><p>#test\n<a href="http://demo.com/blog/demo-interview">check out</a></p>\n</content>' + "</entry>";
expect(result).toEqual(expected);
});
});