e3d3eda2e1
Converts the tool chain to use babel, eslint, and webpack vs. the previous proprietary solutions. Additionally begins enforcing additional linting concerns as well as updates the code to reflect these rules. Fixes #855 Fixes #993
90 lines
3.0 KiB
JavaScript
90 lines
3.0 KiB
JavaScript
describe('runtime', function() {
|
|
describe('#template', function() {
|
|
it('should throw on invalid templates', function() {
|
|
shouldThrow(function() {
|
|
Handlebars.template({});
|
|
}, Error, 'Unknown template object: object');
|
|
shouldThrow(function() {
|
|
Handlebars.template();
|
|
}, Error, 'Unknown template object: undefined');
|
|
shouldThrow(function() {
|
|
Handlebars.template('');
|
|
}, Error, 'Unknown template object: string');
|
|
});
|
|
it('should throw on version mismatch', function() {
|
|
shouldThrow(function() {
|
|
Handlebars.template({
|
|
main: true,
|
|
compiler: [Handlebars.COMPILER_REVISION + 1]
|
|
});
|
|
}, Error, /Template was precompiled with a newer version of Handlebars than the current runtime/);
|
|
shouldThrow(function() {
|
|
Handlebars.template({
|
|
main: true,
|
|
compiler: [Handlebars.COMPILER_REVISION - 1]
|
|
});
|
|
}, Error, /Template was precompiled with an older version of Handlebars than the current runtime/);
|
|
shouldThrow(function() {
|
|
Handlebars.template({
|
|
main: true
|
|
});
|
|
}, 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 without depths', function() {
|
|
shouldThrow(function() {
|
|
var template = Handlebars.compile('{{#foo}}{{../bar}}{{/foo}}');
|
|
// Calling twice to hit the non-compiled case.
|
|
template._setup({});
|
|
template._setup({});
|
|
template._child(1);
|
|
}, Error, 'must pass parent depths');
|
|
});
|
|
|
|
it('should throw for block param methods without params', function() {
|
|
shouldThrow(function() {
|
|
var template = Handlebars.compile('{{#foo as |foo|}}{{foo}}{{/foo}}');
|
|
// Calling twice to hit the non-compiled case.
|
|
template._setup({});
|
|
template._setup({});
|
|
template._child(1);
|
|
}, Error, 'must pass block params');
|
|
});
|
|
it('should expose child template', function() {
|
|
var template = Handlebars.compile('{{#foo}}bar{{/foo}}');
|
|
// Calling twice to hit the non-compiled case.
|
|
equal(template._child(1)(), 'bar');
|
|
equal(template._child(1)(), 'bar');
|
|
});
|
|
it('should render depthed content', function() {
|
|
var template = Handlebars.compile('{{#foo}}{{../bar}}{{/foo}}');
|
|
// Calling twice to hit the non-compiled case.
|
|
equal(template._child(1, undefined, [], [{bar: 'baz'}])(), 'baz');
|
|
});
|
|
});
|
|
|
|
describe('#noConflict', function() {
|
|
if (!CompilerContext.browser) {
|
|
return;
|
|
}
|
|
|
|
it('should reset on no conflict', function() {
|
|
var reset = Handlebars;
|
|
Handlebars.noConflict();
|
|
equal(Handlebars, 'no-conflict');
|
|
|
|
Handlebars = 'really, none';
|
|
reset.noConflict();
|
|
equal(Handlebars, 'really, none');
|
|
|
|
Handlebars = reset;
|
|
});
|
|
});
|
|
});
|