adda0569e0
Allows for testing node, browser, and precompiled modes in the node tests. Also reorganizes the qunit spec file to provide better organization.
120 lines
5.5 KiB
JavaScript
120 lines
5.5 KiB
JavaScript
/*global CompilerContext, shouldCompileTo, shouldCompileToWithPartials */
|
|
describe('partials', function() {
|
|
it("basic partials", function() {
|
|
var string = "Dudes: {{#dudes}}{{> dude}}{{/dudes}}";
|
|
var partial = "{{name}} ({{url}}) ";
|
|
var hash = {dudes: [{name: "Yehuda", url: "http://yehuda"}, {name: "Alan", url: "http://alan"}]};
|
|
shouldCompileToWithPartials(string, [hash, {}, {dude: partial}], true, "Dudes: Yehuda (http://yehuda) Alan (http://alan) ",
|
|
"Basic partials output based on current context.");
|
|
});
|
|
|
|
it("partials with context", function() {
|
|
var string = "Dudes: {{>dude dudes}}";
|
|
var partial = "{{#this}}{{name}} ({{url}}) {{/this}}";
|
|
var hash = {dudes: [{name: "Yehuda", url: "http://yehuda"}, {name: "Alan", url: "http://alan"}]};
|
|
shouldCompileToWithPartials(string, [hash, {}, {dude: partial}], true, "Dudes: Yehuda (http://yehuda) Alan (http://alan) ",
|
|
"Partials can be passed a context");
|
|
});
|
|
|
|
it("partial in a partial", function() {
|
|
var string = "Dudes: {{#dudes}}{{>dude}}{{/dudes}}";
|
|
var dude = "{{name}} {{> url}} ";
|
|
var url = "<a href='{{url}}'>{{url}}</a>";
|
|
var hash = {dudes: [{name: "Yehuda", url: "http://yehuda"}, {name: "Alan", url: "http://alan"}]};
|
|
shouldCompileToWithPartials(string, [hash, {}, {dude: dude, url: url}], true, "Dudes: Yehuda <a href='http://yehuda'>http://yehuda</a> Alan <a href='http://alan'>http://alan</a> ", "Partials are rendered inside of other partials");
|
|
});
|
|
|
|
it("rendering undefined partial throws an exception", function() {
|
|
(function() {
|
|
var template = CompilerContext.compile("{{> whatever}}");
|
|
template();
|
|
}).should.throw(Handlebars.Exception, 'The partial whatever could not be found');
|
|
});
|
|
|
|
it("rendering template partial in vm mode throws an exception", function() {
|
|
(function() {
|
|
var template = CompilerContext.compile("{{> whatever}}");
|
|
template();
|
|
}).should.throw(Handlebars.Exception, 'The partial whatever could not be found');
|
|
});
|
|
|
|
it("rendering function partial in vm mode", function() {
|
|
var string = "Dudes: {{#dudes}}{{> dude}}{{/dudes}}";
|
|
var partial = function(context) {
|
|
return context.name + ' (' + context.url + ') ';
|
|
};
|
|
var hash = {dudes: [{name: "Yehuda", url: "http://yehuda"}, {name: "Alan", url: "http://alan"}]};
|
|
shouldCompileTo(string, [hash, {}, {dude: partial}], "Dudes: Yehuda (http://yehuda) Alan (http://alan) ",
|
|
"Function partials output based in VM.");
|
|
});
|
|
|
|
it("GH-14: a partial preceding a selector", function() {
|
|
var string = "Dudes: {{>dude}} {{another_dude}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {dude:dude}], true, "Dudes: Jeepers Creepers", "Regular selectors can follow a partial");
|
|
});
|
|
|
|
it("Partials with slash paths", function() {
|
|
var string = "Dudes: {{> shared/dude}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'shared/dude':dude}], true, "Dudes: Jeepers", "Partials can use literal paths");
|
|
});
|
|
|
|
it("Partials with slash and point paths", function() {
|
|
var string = "Dudes: {{> shared/dude.thing}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'shared/dude.thing':dude}], true, "Dudes: Jeepers", "Partials can use literal with points in paths");
|
|
});
|
|
|
|
it("Global Partials", function() {
|
|
Handlebars.registerPartial('global_test', '{{another_dude}}');
|
|
|
|
var string = "Dudes: {{> shared/dude}} {{> global_test}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'shared/dude':dude}], true, "Dudes: Jeepers Creepers", "Partials can use globals or passed");
|
|
});
|
|
|
|
it("Multiple partial registration", function() {
|
|
Handlebars.registerPartial({
|
|
'shared/dude': '{{name}}',
|
|
global_test: '{{another_dude}}'
|
|
});
|
|
|
|
var string = "Dudes: {{> shared/dude}} {{> global_test}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash], true, "Dudes: Jeepers Creepers", "Partials can use globals or passed");
|
|
});
|
|
|
|
it("Partials with integer path", function() {
|
|
var string = "Dudes: {{> 404}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {404:dude}], true, "Dudes: Jeepers", "Partials can use literal paths");
|
|
});
|
|
|
|
it("Partials with complex path", function() {
|
|
var string = "Dudes: {{> 404/asdf?.bar}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'404/asdf?.bar':dude}], true, "Dudes: Jeepers", "Partials can use literal paths");
|
|
});
|
|
|
|
it("Partials with escaped", function() {
|
|
var string = "Dudes: {{> [+404/asdf?.bar]}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'+404/asdf?.bar':dude}], true, "Dudes: Jeepers", "Partials can use literal paths");
|
|
});
|
|
|
|
it("Partials with string", function() {
|
|
var string = "Dudes: {{> \"+404/asdf?.bar\"}}";
|
|
var dude = "{{name}}";
|
|
var hash = {name:"Jeepers", another_dude:"Creepers"};
|
|
shouldCompileToWithPartials(string, [hash, {}, {'+404/asdf?.bar':dude}], true, "Dudes: Jeepers", "Partials can use literal paths");
|
|
});
|
|
});
|