|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /* eslint-disable func-names */
- require('./helper');
-
- describe('Partials spec', function () {
- beforeEach(function () {
- Mustache.clearCache();
- });
-
-
- it('The greater-than operator should expand to the named partial.', function () {
- var template = '"{{>text}}"';
- var data = {};
- var partials = {'text':'from partial'};
- var expected = '"from partial"';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('The empty string should be used when the named partial is not found.', function () {
- var template = '"{{>text}}"';
- var data = {};
- var partials = {};
- var expected = '""';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('The greater-than operator should operate within the current context.', function () {
- var template = '"{{>partial}}"';
- var data = {'text':'content'};
- var partials = {'partial':'*{{text}}*'};
- var expected = '"*content*"';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('Inline partials should not be indented', function () {
- var template = ' <div>{{> partial}}</div>';
- var data = {};
- var partials = {'partial':'This is a partial.'};
- var expected = ' <div>This is a partial.</div>';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('Inline partials should not be indented (multiline)', function () {
- var template = ' <div>{{> partial}}</div>';
- var data = {};
- var partials = {'partial':'This is a\npartial.'};
- var expected = ' <div>This is a\n partial.</div>';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('The greater-than operator should properly recurse.', function () {
- var template = '{{>node}}';
- var data = {'content':'X','nodes':[{'content':'Y','nodes':[]}]};
- var partials = {'node':'{{content}}<{{#nodes}}{{>node}}{{/nodes}}>'};
- var expected = 'X<Y<>>';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('The greater-than operator should not alter surrounding whitespace.', function () {
- var template = '| {{>partial}} |';
- var data = {};
- var partials = {'partial':'\t|\t'};
- var expected = '| \t|\t |';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('"\r\n" should be considered a newline for standalone tags.', function () {
- var template = '|\r\n{{>partial}}\r\n|';
- var data = {};
- var partials = {'partial':'>'};
- var expected = '|\r\n>|';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('Standalone tags should not require a newline to precede them.', function () {
- var template = ' {{>partial}}\n>';
- var data = {};
- var partials = {'partial':'>\n>'};
- var expected = ' >\n >>';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('Superfluous in-tag whitespace should be ignored.', function () {
- var template = '|{{> partial }}|';
- var data = {'boolean':true};
- var partials = {'partial':'[]'};
- var expected = '|[]|';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- it('Each line of the partial should be indented before rendering.', function () {
- var template = '\\\n {{>partial}}\n/\n';
- var data = {
- 'content': '<\n->'
- };
- var partials = {
- 'partial': '|\n{{{content}}}\n|\n'
- };
- var expected = '\\\n |\n <\n->\n |\n/\n';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('Standalone tags should not require a newline to follow them.', function () {
- var template = '>\n {{>partial}}';
- var data = {
-
- };
- var partials = {
- 'partial': '>\n>'
- };
- var expected = '>\n >\n >';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('Whitespace should be left untouched.', function () {
- var template = ' {{data}} {{> partial}}\n';
- var data = {
- 'data': '|'
- };
- var partials = {
- 'partial': '>\n>'
- };
- var expected = ' | >\n>\n';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('Partial without indentation should inherit functions.', function () {
- var template = '{{> partial }}';
- var data = {
- toUpperCase: function () {
- return function (label) {
- return label.toUpperCase();
- };
- }
- };
- var partials = {partial: 'aA-{{ #toUpperCase }}Input{{ /toUpperCase }}-Aa'};
- var expected = 'aA-INPUT-Aa';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
-
- it('Partial with indentation should inherit functions.', function () {
- var template = ' {{> partial }}';
- var data = {
- toUpperCase: function () {
- return function (label) {
- return label.toUpperCase();
- };
- }
- };
- var partials = {partial: 'aA-{{ #toUpperCase }}Input{{ /toUpperCase }}-Aa'};
- var expected = ' aA-INPUT-Aa';
- var renderResult = Mustache.render(template, data, partials);
- assert.equal(renderResult, expected);
- });
- });
|