blogs
Version:
A simple blog generator.
100 lines (86 loc) • 2.32 kB
JavaScript
var assert = require('assert');
var path = require('path');
var Blog = require('../lib/-blog');
var Post = require('../lib/-post');
describe('Blog', function () {
var blog;
beforeEach(function () {
blog = new Blog(path.join(__dirname, '../sample'));
});
it('should have dir', function () {
assert.equal(blog.dir, path.join(__dirname, '../sample'));
});
it('should have basic info', function () {
assert.deepEqual({
title: blog.title,
subTitle: blog.subTitle,
author: blog.author
}, {
title: 'Sheldon\'s Diary',
subTitle: 'Deshi, Deshi',
author: 'Sheldon'
});
});
it('should get paths relative to its root direcotry', function () {
assert.equal(blog.path('assets'), path.join(__dirname, '../sample/assets'));
});
it('should get posts', function (done) {
blog.posts((error, posts) => {
assert.ok(!error && 0 < posts.length && posts.every((post) => {
return post instanceof Post;
}));
done();
});
});
it('should get layouts', function (done) {
blog.layouts(function (error, layouts) {
assert.deepEqual(!error && layouts, [
'error',
'index',
'post'
].reduce((layout, name) => {
layout[name] = path.join(__dirname, '../sample/layout/' + name + '.html');
return layout;
}, {}));
done();
});
});
it('should get plugins', function (done) {
blog.plugins('filter', (error, filters) => {
var filterNames = [
'blockIndent',
'sample'
];
assert.deepEqual(!error && filterNames.reduce((results, name) => {
results[name] = typeof filters[name];
return results;
}, {}), filterNames.reduce((results, name) => {
results[name] = 'function';
return results;
}, {}));
done();
});
});
it('should render a string', function (done) {
blog.render('{{ weapon }} is an easy set to get the hang of!', null, {
weapon: 'L-3 Nozzlenose D'
}, (error, result) => {
assert.equal(!error && result, 'L-3 Nozzlenose D is an easy set to get the hang of!');
done();
});
});
it('should compile a blog', function (done) {
blog.compile((error, blog) => {
assert.ok(!error && blog.posts.every((post) => {
return post.rendered;
}));
done();
});
});
it('should deploy files', function (done) {
blog.deploy((error) => {
assert.ok(!error);
done();
});
});
});