const test = require("ava"); const path = require("path"); const request = require("supertest"); const cheerio = require("cheerio"); process.chdir(path.resolve(__dirname, "./testsite/")); const config = require(path.resolve(__dirname, "../src/modules/config.js")); const app = require("../src/app.js"); const parseResponse = res => cheerio.load(res.text, { normalizeWhitespace: true, useHtmlParser2: true }); test("homepage", t => { return request(app.listen()) .get("/") .expect(200) .expect(/^/) .then(parseResponse) .then($ => { t.is($("head > title").text(), config.site.title); t.is($("h1").text(), config.site.title); t.is($("main").length, 1); }); }); test("post", t => { return request(app.listen()) .get("/post/testfile") .expect(200) .expect(/^/) .then(parseResponse) .then($ => { t.is($("head > title").text(), "This is a test ยท " + config.site.title); t.is($("article h1").text(), "This is a test"); t.is( $("article p").text(), `Ut enim blandit volutpat maecenas? Volutpat blandit aliquam etiam erat \ velit, scelerisque in dictum non, consectetur a erat nam at lectus \ urna duis convallis convallis tellus, id interdum velit laoreet!` ); }); }); test("post not found", t => { return request(app.listen()) .get("/post/non-existant") .expect(404) .expect(/Post not found/) .then(() => t.pass()); }); test("tags", t => { return request(app.listen()) .get("/tag/a") .expect(200) .expect(/This is a test/) .then(() => t.pass()); }); test("tags not found", t => request(app.listen()) .get("/tag/non-existant") .expect(404) .expect(/tag non-existant not found/) .then(() => t.pass()));