requirejs-twig
Version:
A plugin for twig in require.js
98 lines (77 loc) • 3.05 kB
JavaScript
define(function() {
'use strict';
function getRequire(config) {
var context = requirejs.config({
baseUrl: '/base',
paths: {
twig: 'bower_components/twig.js/twig'
},
config: {
twigjs: config
},
context: 'test' + Date.now()
});
return function() {
return context.apply(this, arguments);
};
}
function assertLoaded(loaded, done) {
expect(loaded).toBeTruthy();
done();
}
describe('config.autoescape', function() {
it('should turn on autoescape by default', function(done) {
var testRequire = getRequire();
testRequire(['twigjs!test/templates/simple'], function(template) {
expect(template({ value: '<test>&</test>' })).toEqual('<test>&</test>');
done();
}, function() {
assertLoaded(false, done);
});
});
it('should turn on autoescape if true', function(done) {
var testRequire = getRequire();
testRequire(['twigjs!test/templates/simple'], function(template) {
expect(template({ value: '<test>&</test>' })).toEqual('<test>&</test>');
done();
}, function() {
assertLoaded(false, done);
});
});
it('should turn off autoescape if false', function(done) {
var testRequire = getRequire({ autoescape: false });
testRequire(['twigjs!test/templates/simple'], function(template) {
expect(template({ value: '<test>&</test>' })).toEqual('<test>&</test>');
done();
}, function() {
assertLoaded(false, done);
});
});
});
describe('config.extension', function() {
it('should load the template with "twig" extension by default', function(done) {
var testRequire = getRequire();
testRequire(['twigjs!test/templates/simple'], function() {
assertLoaded(true, done);
}, function() {
assertLoaded(false, done);
});
});
it('should load the template with configured extension', function(done) {
var testRequire = getRequire({ extension: 'html' });
testRequire(['twigjs!test/templates/simple'], function() {
assertLoaded(true, done);
}, function() {
assertLoaded(false, done);
});
});
it('should load the template if extension is empty, null or false', function(done) {
var testRequire = getRequire({ extension: '' });
testRequire(['twigjs!test/templates/simple.html'], function() {
assertLoaded(true, done);
}, function() {
assertLoaded(false, done);
});
});
});
});