mirror of https://github.com/ColorlibHQ/gentelella
177 lines
5.4 KiB
JavaScript
177 lines
5.4 KiB
JavaScript
require('mocha');
|
|
require('should');
|
|
var assert = require('assert');
|
|
var support = require('./support');
|
|
var App = support.resolve();
|
|
var Views = App.Views;
|
|
var collection, pages;
|
|
|
|
describe('collection engines', function() {
|
|
beforeEach(function() {
|
|
pages = new Views();
|
|
});
|
|
|
|
it('should throw an error when engine name is invalid:', function() {
|
|
(function() {
|
|
pages.engine(null, {});
|
|
}).should.throw('expected engine ext to be a string or array.');
|
|
});
|
|
|
|
it('should register an engine to the given extension', function() {
|
|
pages.engine('hbs', function() {});
|
|
assert(typeof pages.engines['.hbs'] === 'object');
|
|
});
|
|
|
|
it('should set an engine with the given extension', function() {
|
|
var hbs = function() {};
|
|
hbs.render = function() {};
|
|
hbs.renderFile = function() {};
|
|
pages.engine('hbs', hbs);
|
|
assert(pages.engines['.hbs']);
|
|
assert(pages.engines['.hbs'].renderFile);
|
|
assert(pages.engines['.hbs'].render);
|
|
});
|
|
|
|
it('should get an engine:', function() {
|
|
pages.engine('hbs', function() {});
|
|
var hbs = pages.engine('hbs');
|
|
assert(typeof hbs === 'object');
|
|
assert(hbs.hasOwnProperty('render'));
|
|
assert(hbs.hasOwnProperty('compile'));
|
|
});
|
|
|
|
it('should register multiple engines to the given extension', function() {
|
|
pages.engine(['hbs', 'md'], function() {});
|
|
assert(typeof pages.engines['.hbs'] === 'object');
|
|
assert(typeof pages.engines['.md'] === 'object');
|
|
});
|
|
});
|
|
|
|
describe('engines', function() {
|
|
beforeEach(function() {
|
|
pages = new Views();
|
|
pages.addView('foo.tmpl', {content: 'A <%= letter %> {{= letter }} C'});
|
|
pages.addView('bar.tmpl', {content: 'A <%= letter %> {{ letter }} C'});
|
|
});
|
|
|
|
it('should register an engine:', function() {
|
|
pages.engine('a', {render: function() {}});
|
|
pages.engines.should.have.property('.a');
|
|
});
|
|
|
|
it('should use custom delimiters:', function(done) {
|
|
pages.engine('tmpl', require('engine-base'), {
|
|
delims: ['{{', '}}']
|
|
});
|
|
|
|
pages.render('foo.tmpl', {letter: 'B'}, function(err, res) {
|
|
if (err) return done(err);
|
|
res.content.should.equal('A <%= letter %> B C');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should override individual delims values:', function(done) {
|
|
pages.engine('tmpl', require('engine-base'), {
|
|
interpolate: /\{{([^}]+)}}/g,
|
|
evaluate: /\{{([^}]+)}}/g,
|
|
escape: /\{{-([^}]+)}}/g
|
|
});
|
|
pages.render('bar.tmpl', {letter: 'B'}, function(err, res) {
|
|
if (err) return done(err);
|
|
res.content.should.equal('A <%= letter %> B C');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should get an engine:', function() {
|
|
pages.engine('a', {
|
|
render: function() {}
|
|
});
|
|
var a = pages.engine('a');
|
|
a.should.have.property('render');
|
|
});
|
|
});
|
|
|
|
describe('engine selection:', function() {
|
|
beforeEach(function(done) {
|
|
collection = new Views();
|
|
collection.engine('tmpl', require('engine-base'));
|
|
collection.engine('hbs', require('engine-handlebars'));
|
|
done();
|
|
});
|
|
|
|
it('should get the engine from file extension:', function(done) {
|
|
var pages = new Views();
|
|
pages.engine('tmpl', require('engine-base'));
|
|
pages.engine('hbs', require('engine-handlebars'));
|
|
pages.addView('a.tmpl', {content: '<%= a %>', locals: {a: 'b'}})
|
|
.render(function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should use the engine defined on the collection:', function(done) {
|
|
var posts = new Views({engine: 'hbs'});
|
|
posts.engine('tmpl', require('engine-base'));
|
|
posts.engine('hbs', require('engine-handlebars'));
|
|
|
|
posts.addView('a', {content: '{{a}}', locals: {a: 'b'}})
|
|
.render(function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should use the engine defined on the view:', function(done) {
|
|
var posts = new Views();
|
|
posts.engine('tmpl', require('engine-base'));
|
|
posts.engine('hbs', require('engine-handlebars'));
|
|
posts.addView('a', {content: '{{a}}', engine: 'hbs', locals: {a: 'b'}})
|
|
.render(function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should use the engine defined on view.options:', function(done) {
|
|
var posts = new Views();
|
|
posts.engine('tmpl', require('engine-base'));
|
|
posts.engine('hbs', require('engine-handlebars'));
|
|
posts.addView('a', {content: '{{a}}', data: {a: 'b'}, options: {engine: 'hbs'}})
|
|
.render(function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should use the engine defined on view.data:', function(done) {
|
|
var posts = new Views();
|
|
posts.engine('tmpl', require('engine-base'));
|
|
posts.engine('hbs', require('engine-handlebars'));
|
|
posts.addView('a', {content: '{{a}}', locals: {a: 'b'}, data: {engine: 'hbs'}})
|
|
.render(function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should use the engine defined on render locals:', function(done) {
|
|
var posts = new Views();
|
|
posts.engine('tmpl', require('engine-base'));
|
|
posts.engine('hbs', require('engine-handlebars'));
|
|
posts.addView('a', {content: '{{a}}', locals: {a: 'b'}})
|
|
.render({engine: 'hbs'}, function(err, view) {
|
|
if (err) return done(err);
|
|
assert(view.content === 'b');
|
|
done();
|
|
});
|
|
});
|
|
});
|