From 562b0533300ad5ad8cf4695aa7fc2b844b918169 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Fri, 30 Jun 2017 17:37:20 +0200 Subject: feat: load config from cwd and merge with defaults --- src/modules/config.js | 18 +++++++++------ test/app.test.js | 50 ++++++++++++++++++++--------------------- test/data/testfile.md | 6 ----- test/domain/posts.test.js | 34 +++++++++++++++------------- test/testsite/config.toml | 2 ++ test/testsite/posts/testfile.md | 6 +++++ 6 files changed, 62 insertions(+), 54 deletions(-) delete mode 100644 test/data/testfile.md create mode 100644 test/testsite/config.toml create mode 100644 test/testsite/posts/testfile.md diff --git a/src/modules/config.js b/src/modules/config.js index 461945d..72d1b1a 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -1,10 +1,14 @@ -'use strict' +"use strict"; -const TOML = require('toml') -const config = require('configly') +const path = require("path"); +const TOML = require("toml"); +const config = require("configly"); -module.exports = config({ - parsers: { - toml: TOML.parse +module.exports = config( + ["./config", path.resolve(__dirname, "../../config/")], + { + parsers: { + toml: TOML.parse + } } -}) +); diff --git a/test/app.test.js b/test/app.test.js index a054366..9b0403c 100644 --- a/test/app.test.js +++ b/test/app.test.js @@ -1,49 +1,49 @@ -const test = require('ava') -const path = require('path') -const request = require('supertest') +const test = require("ava"); +const path = require("path"); +const request = require("supertest"); -const config = require('../src/modules/config.js') -config.posts.folder = path.resolve(__dirname, './data/') +process.chdir(path.resolve(__dirname, "./testsite/")); +const config = require(path.resolve(__dirname, "../src/modules/config.js")); -const app = require('../src/app.js') +const app = require("../src/app.js"); -test('homepage', t => { +test("homepage", t => { return request(app.listen()) - .get('/') + .get("/") .expect(200) .expect(/Test Site<\/title>/) .expect(/<h1>Test Site<\/h1>/) .expect(/This is a test/) - .then(() => t.pass()) -}) + .then(() => t.pass()); +}); -test('post', t => { +test("post", t => { return request(app.listen()) - .get('/post/testfile') + .get("/post/testfile") .expect(200) .expect(/<h1>Lorem ipsum<\/h1>/) - .then(() => t.pass()) -}) + .then(() => t.pass()); +}); -test('post not found', t => { +test("post not found", t => { return request(app.listen()) - .get('/post/non-existant') + .get("/post/non-existant") .expect(404) .expect(/Post not found/) - .then(() => t.pass()) -}) + .then(() => t.pass()); +}); -test('tags', t => { +test("tags", t => { return request(app.listen()) - .get('/tag/a') + .get("/tag/a") .expect(200) .expect(/This is a test/) - .then(() => t.pass()) -}) + .then(() => t.pass()); +}); -test('tags not found', t => +test("tags not found", t => request(app.listen()) - .get('/tag/non-existant') + .get("/tag/non-existant") .expect(404) .expect(/tag non-existant not found/) - .then(() => t.pass())) + .then(() => t.pass())); diff --git a/test/data/testfile.md b/test/data/testfile.md deleted file mode 100644 index bafc456..0000000 --- a/test/data/testfile.md +++ /dev/null @@ -1,6 +0,0 @@ -+++ -Title = "This is a test" -Description = "Test file" -Tags = ["a", "b"] -+++ -# Lorem ipsum diff --git a/test/domain/posts.test.js b/test/domain/posts.test.js index 8866f40..c433ce5 100644 --- a/test/domain/posts.test.js +++ b/test/domain/posts.test.js @@ -1,23 +1,25 @@ -const test = require('ava') -const path = require('path') +const test = require("ava"); +const path = require("path"); -const Posts = require('../../src/domain/posts.js')({ - folder: path.resolve('../data', __dirname), +const Posts = require("../../src/domain/posts.js")({ + folder: path.resolve(__dirname, "../testsite/posts/"), taxonomies: { - tag: 'tags', - category: 'categories' + tag: "tags", + category: "categories" } -}) +}); -test('get', t => { +test("get", t => { const expected = new Map( Object.entries({ - title: 'This is a test', - description: 'Test file', - tags: ['a', 'b'] + title: "This is a test", + description: "Test file", + tags: ["a", "b"] }) - ) - const post = Posts.get(path.resolve(__dirname, '../data/testfile.md')) - t.deepEqual(post.data, expected) - t.is(post.basename, 'testfile', 'must include basename') -}) + ); + const post = Posts.get( + path.resolve(__dirname, "../testsite/posts/testfile.md") + ); + t.deepEqual(post.data, expected); + t.is(post.basename, "testfile", "must include basename"); +}); diff --git a/test/testsite/config.toml b/test/testsite/config.toml new file mode 100644 index 0000000..1fbbb82 --- /dev/null +++ b/test/testsite/config.toml @@ -0,0 +1,2 @@ +[posts] +folder = "./posts" \ No newline at end of file diff --git a/test/testsite/posts/testfile.md b/test/testsite/posts/testfile.md new file mode 100644 index 0000000..bafc456 --- /dev/null +++ b/test/testsite/posts/testfile.md @@ -0,0 +1,6 @@ ++++ +Title = "This is a test" +Description = "Test file" +Tags = ["a", "b"] ++++ +# Lorem ipsum -- cgit 1.4.1