Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

partial-test.js 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /* eslint-disable func-names */
  2. require('./helper');
  3. describe('Partials spec', function () {
  4. beforeEach(function () {
  5. Mustache.clearCache();
  6. });
  7. it('The greater-than operator should expand to the named partial.', function () {
  8. var template = '"{{>text}}"';
  9. var data = {};
  10. var partials = {'text':'from partial'};
  11. var expected = '"from partial"';
  12. var renderResult = Mustache.render(template, data, partials);
  13. assert.equal(renderResult, expected);
  14. });
  15. it('The empty string should be used when the named partial is not found.', function () {
  16. var template = '"{{>text}}"';
  17. var data = {};
  18. var partials = {};
  19. var expected = '""';
  20. var renderResult = Mustache.render(template, data, partials);
  21. assert.equal(renderResult, expected);
  22. });
  23. it('The greater-than operator should operate within the current context.', function () {
  24. var template = '"{{>partial}}"';
  25. var data = {'text':'content'};
  26. var partials = {'partial':'*{{text}}*'};
  27. var expected = '"*content*"';
  28. var renderResult = Mustache.render(template, data, partials);
  29. assert.equal(renderResult, expected);
  30. });
  31. it('The greater-than operator should properly recurse.', function () {
  32. var template = '{{>node}}';
  33. var data = {'content':'X','nodes':[{'content':'Y','nodes':[]}]};
  34. var partials = {'node':'{{content}}<{{#nodes}}{{>node}}{{/nodes}}>'};
  35. var expected = 'X<Y<>>';
  36. var renderResult = Mustache.render(template, data, partials);
  37. assert.equal(renderResult, expected);
  38. });
  39. it('The greater-than operator should not alter surrounding whitespace.', function () {
  40. var template = '| {{>partial}} |';
  41. var data = {};
  42. var partials = {'partial':'\t|\t'};
  43. var expected = '| \t|\t |';
  44. var renderResult = Mustache.render(template, data, partials);
  45. assert.equal(renderResult, expected);
  46. });
  47. it('"\r\n" should be considered a newline for standalone tags.', function () {
  48. var template = '|\r\n{{>partial}}\r\n|';
  49. var data = {};
  50. var partials = {'partial':'>'};
  51. var expected = '|\r\n>|';
  52. var renderResult = Mustache.render(template, data, partials);
  53. assert.equal(renderResult, expected);
  54. });
  55. it('Standalone tags should not require a newline to precede them.', function () {
  56. var template = ' {{>partial}}\n>';
  57. var data = {};
  58. var partials = {'partial':'>\n>'};
  59. var expected = ' >\n >>';
  60. var renderResult = Mustache.render(template, data, partials);
  61. assert.equal(renderResult, expected);
  62. });
  63. it('Superfluous in-tag whitespace should be ignored.', function () {
  64. var template = '|{{> partial }}|';
  65. var data = {'boolean':true};
  66. var partials = {'partial':'[]'};
  67. var expected = '|[]|';
  68. var renderResult = Mustache.render(template, data, partials);
  69. assert.equal(renderResult, expected);
  70. });
  71. it('Each line of the partial should be indented before rendering.', function () {
  72. var template = '\\\n {{>partial}}\n/\n';
  73. var data = {
  74. 'content': '<\n->'
  75. };
  76. var partials = {
  77. 'partial': '|\n{{{content}}}\n|\n'
  78. };
  79. var expected = '\\\n |\n <\n->\n |\n/\n';
  80. var renderResult = Mustache.render(template, data, partials);
  81. assert.equal(renderResult, expected);
  82. });
  83. it('Standalone tags should not require a newline to follow them.', function () {
  84. var template = '>\n {{>partial}}';
  85. var data = {
  86. };
  87. var partials = {
  88. 'partial': '>\n>'
  89. };
  90. var expected = '>\n >\n >';
  91. var renderResult = Mustache.render(template, data, partials);
  92. assert.equal(renderResult, expected);
  93. });
  94. it('Whitespace should be left untouched.', function () {
  95. var template = ' {{data}} {{> partial}}\n';
  96. var data = {
  97. 'data': '|'
  98. };
  99. var partials = {
  100. 'partial': '>\n>'
  101. };
  102. var expected = ' | >\n>\n';
  103. var renderResult = Mustache.render(template, data, partials);
  104. assert.equal(renderResult, expected);
  105. });
  106. it('Partial without indentation should inherit functions.', function () {
  107. var template = '{{> partial }}';
  108. var data = {
  109. toUpperCase: function () {
  110. return function (label) {
  111. return label.toUpperCase();
  112. };
  113. }
  114. };
  115. var partials = {partial: 'aA-{{ #toUpperCase }}Input{{ /toUpperCase }}-Aa'};
  116. var expected = 'aA-INPUT-Aa';
  117. var renderResult = Mustache.render(template, data, partials);
  118. assert.equal(renderResult, expected);
  119. });
  120. it('Partial with indentation should inherit functions.', function () {
  121. var template = ' {{> partial }}';
  122. var data = {
  123. toUpperCase: function () {
  124. return function (label) {
  125. return label.toUpperCase();
  126. };
  127. }
  128. };
  129. var partials = {partial: 'aA-{{ #toUpperCase }}Input{{ /toUpperCase }}-Aa'};
  130. var expected = ' aA-INPUT-Aa';
  131. var renderResult = Mustache.render(template, data, partials);
  132. assert.equal(renderResult, expected);
  133. });
  134. });