metalsmith-layouts/test/index.js

153 lines
4.2 KiB
JavaScript
Raw Normal View History

2014-02-04 21:47:35 -08:00
var assert = require('assert');
var equal = require('assert-dir-equal');
var Metalsmith = require('metalsmith');
2015-07-16 20:56:01 +02:00
var layouts = require('..');
2014-02-04 21:47:35 -08:00
2015-07-16 20:56:01 +02:00
describe('metalsmith-layouts', function(){
2014-02-04 21:47:35 -08:00
it('should render a basic template', function(done){
Metalsmith('test/fixtures/basic')
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig' }))
2014-02-04 21:47:35 -08:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-02-04 21:47:35 -08:00
equal('test/fixtures/basic/expected', 'test/fixtures/basic/build');
done();
});
});
it('should accept an engine string', function(done){
Metalsmith('test/fixtures/basic')
2015-07-16 20:56:01 +02:00
.use(layouts('swig'))
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
equal('test/fixtures/basic/expected', 'test/fixtures/basic/build');
done();
});
});
2014-03-08 19:56:18 -08:00
it('should accept a pattern to match', function(done){
Metalsmith('test/fixtures/pattern')
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig', pattern: '*.md' }))
2014-03-08 19:56:18 -08:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-03-08 19:56:18 -08:00
equal('test/fixtures/pattern/expected', 'test/fixtures/pattern/build');
done();
});
});
2014-04-02 12:28:52 -07:00
it('should accept a default template', function(done){
Metalsmith('test/fixtures/default')
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig', pattern: '*.md', default: 'default.html' }))
2014-04-02 12:28:52 -07:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-04-02 12:28:52 -07:00
equal('test/fixtures/pattern/expected', 'test/fixtures/pattern/build');
done();
});
});
2015-07-16 20:56:01 +02:00
it('should accept a different layouts directory', function(done){
2014-02-07 19:43:04 -08:00
Metalsmith('test/fixtures/directory')
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig', directory: 'templates' }))
2014-02-04 21:47:35 -08:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-02-07 19:43:04 -08:00
equal('test/fixtures/directory/expected', 'test/fixtures/directory/build');
2014-02-04 21:47:35 -08:00
done();
});
});
2014-02-05 11:44:18 -08:00
it('should mix in global metadata', function(done){
Metalsmith('test/fixtures/metadata')
.metadata({ title: 'Global Title' })
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig' }))
2014-02-05 11:44:18 -08:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-02-05 11:44:18 -08:00
equal('test/fixtures/metadata/expected', 'test/fixtures/metadata/build');
done();
});
});
2014-07-09 11:15:03 -07:00
it('should preserve binary files', function(done){
Metalsmith('test/fixtures/binary')
2015-07-16 20:56:01 +02:00
.use(layouts({ engine: 'swig' }))
2014-07-09 11:15:03 -07:00
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2014-07-09 11:15:03 -07:00
equal('test/fixtures/binary/expected', 'test/fixtures/binary/build');
done();
});
});
2015-07-25 12:25:35 +02:00
2015-08-06 16:50:13 +02:00
it('should process swig includes', function(done){
Metalsmith('test/fixtures/include')
.use(layouts({ engine: 'swig' }))
.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2015-08-06 16:50:13 +02:00
equal('test/fixtures/include/expected', 'test/fixtures/include/build');
done();
});
});
2015-07-25 12:25:35 +02:00
it('should be capable of processing partials multiple times', function(done){
2015-08-07 17:37:19 +02:00
var instance = Metalsmith('test/fixtures/partials-multiple')
2015-07-25 12:25:35 +02:00
.use(layouts({
engine: 'handlebars',
2015-08-07 16:10:22 +02:00
partials: {nav: 'partials/nav'}
2015-07-25 12:25:35 +02:00
}));
instance.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2015-07-25 12:25:35 +02:00
instance.build(function(err){
2015-08-06 17:04:12 +02:00
if (err) {
return done(err);
}
2015-08-07 17:37:19 +02:00
equal('test/fixtures/partials-multiple/expected', 'test/fixtures/partials-multiple/build');
2015-07-25 12:25:35 +02:00
done();
});
});
});
2015-08-06 16:50:13 +02:00
2015-08-07 16:10:22 +02:00
it('should accept a partials option', function(done){
Metalsmith('test/fixtures/partials-option')
.use(layouts({
engine: 'handlebars',
partials: 'partials'
}))
.build(function(err){
if (err) {
return done(err);
}
equal('test/fixtures/partials-option/expected', 'test/fixtures/partials-option/build');
done();
});
});
2015-08-14 14:16:18 +02:00
it('should ignore files without a layout', function(done){
Metalsmith('test/fixtures/ignore')
.use(layouts('handlebars'))
.build(function(err){
if (err) {
return done(err);
}
equal('test/fixtures/ignore/expected', 'test/fixtures/ignore/build');
done();
});
});
2015-07-25 11:22:36 +02:00
});