Additional test coverage cleanup

Also fixes the template._child implementation which broke with the depthed work.
This commit is contained in:
kpdecker
2014-08-23 18:52:30 -05:00
parent 0c7c37df6a
commit 2b3fdf7ea8
4 changed files with 43 additions and 9 deletions
+2 -4
View File
@@ -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;
};
+3 -4
View File
@@ -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
View File
@@ -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');
});
});
+20
View File
@@ -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');
});
});
});