Additional test coverage cleanup
Also fixes the template._child implementation which broke with the depthed work.
This commit is contained in:
@@ -10,16 +10,14 @@ export function PrintVisitor() {
|
||||
|
||||
PrintVisitor.prototype = new Visitor();
|
||||
|
||||
PrintVisitor.prototype.pad = function(string, newline) {
|
||||
PrintVisitor.prototype.pad = function(string) {
|
||||
var out = "";
|
||||
|
||||
for(var i=0,l=this.padding; i<l; i++) {
|
||||
out = out + " ";
|
||||
}
|
||||
|
||||
out = out + string;
|
||||
|
||||
if(newline !== false) { out = out + "\n"; }
|
||||
out = out + string + "\n";
|
||||
return out;
|
||||
};
|
||||
|
||||
|
||||
@@ -150,12 +150,11 @@ export function template(templateSpec, env) {
|
||||
};
|
||||
|
||||
ret._child = function(i) {
|
||||
if (templateSpec.depth) {
|
||||
throw new Exception('_child can not be used with depthed methods');
|
||||
if (templateSpec.useDepths) {
|
||||
throw new Exception('_child can not be used with depthed templates');
|
||||
}
|
||||
|
||||
// TODO : Fix this
|
||||
return container.programWithDepth(i);
|
||||
return program(container, i, templateSpec[i]);
|
||||
};
|
||||
return ret;
|
||||
}
|
||||
|
||||
+18
-1
@@ -1,5 +1,7 @@
|
||||
/*global shouldThrow */
|
||||
|
||||
var uglify = require('uglify-js');
|
||||
|
||||
describe('precompiler', function() {
|
||||
// NOP Under non-node environments
|
||||
if (typeof process === 'undefined') {
|
||||
@@ -12,10 +14,13 @@ describe('precompiler', function() {
|
||||
var log,
|
||||
logFunction,
|
||||
|
||||
precompile;
|
||||
precompile,
|
||||
minify;
|
||||
|
||||
beforeEach(function() {
|
||||
precompile = Handlebars.precompile;
|
||||
minify = uglify.minify;
|
||||
|
||||
logFunction = console.log;
|
||||
log = '';
|
||||
console.log = function() {
|
||||
@@ -24,6 +29,7 @@ describe('precompiler', function() {
|
||||
});
|
||||
afterEach(function() {
|
||||
Handlebars.precompile = precompile;
|
||||
uglify.minify = minify;
|
||||
console.log = logFunction;
|
||||
});
|
||||
|
||||
@@ -65,6 +71,10 @@ describe('precompiler', function() {
|
||||
equal(/'empty'/.test(log), true);
|
||||
equal(/'example_1'/.test(log), true);
|
||||
});
|
||||
it('should protect from regexp patterns', function() {
|
||||
Precompiler.cli({templates: [__dirname + '/artifacts'], extension: 'hb(s'});
|
||||
// Success is not throwing
|
||||
});
|
||||
it('should output simple templates', function() {
|
||||
Handlebars.precompile = function() { return 'simple'; };
|
||||
Precompiler.cli({templates: [__dirname + '/artifacts/empty.handlebars'], simple: true, extension: 'handlebars'});
|
||||
@@ -110,4 +120,11 @@ describe('precompiler', function() {
|
||||
Precompiler.cli({templates: [__dirname + '/artifacts/empty.handlebars'], simple: true, extension: 'handlebars', known: 'foo'});
|
||||
equal(log, 'simple\n');
|
||||
});
|
||||
|
||||
it('should output minimized templates', function() {
|
||||
Handlebars.precompile = function() { return 'amd'; };
|
||||
uglify.minify = function() { return {code: 'min'}; };
|
||||
Precompiler.cli({templates: [__dirname + '/artifacts/empty.handlebars'], min: true, extension: 'handlebars'});
|
||||
equal(log, 'min');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -33,4 +33,24 @@ describe('runtime', function() {
|
||||
}, Error, /Template was precompiled with an older version of Handlebars than the current runtime/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#child', function() {
|
||||
if (!Handlebars.compile) {
|
||||
return;
|
||||
}
|
||||
|
||||
it('should throw for depthed methods', function() {
|
||||
shouldThrow(function() {
|
||||
var template = Handlebars.compile('{{#foo}}{{../bar}}{{/foo}}');
|
||||
template._setup({});
|
||||
template._setup({});
|
||||
template._child(1);
|
||||
}, Error, '_child can not be used with depthed templates');
|
||||
});
|
||||
it('should expose child template', function() {
|
||||
var template = Handlebars.compile('{{#foo}}bar{{/foo}}');
|
||||
equal(template._child(1)(), 'bar');
|
||||
equal(template._child(1)(), 'bar');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user