|
| 1 | +'use strict'; |
1 | 2 | var assert = require('assert');
|
2 | 3 | var hbs = require('..');
|
3 | 4 | var path = require('path');
|
4 | 5 | var H = require('./helpers');
|
5 | 6 |
|
6 | 7 |
|
7 | 8 | describe('issue-22 template', function() {
|
8 |
| - var dirname = path.join(__dirname, 'issues/22'); |
| 9 | + var dirname = path.join(__dirname, 'issues/22'); |
9 | 10 |
|
10 | 11 | it('should use multiple layouts with caching', function(done) {
|
11 | 12 | var render = hbs.create().express3({});
|
@@ -125,23 +126,23 @@ describe('issue-21', function() {
|
125 | 126 |
|
126 | 127 |
|
127 | 128 | it('should allow specifying layouts without the parent dir in a sub view', function(done) { function check(err, html) {
|
128 |
| - assert.ifError(err); |
129 |
| - assert.equal('<html>sub</html>', H.stripWs(html)); |
130 |
| - done(); |
131 |
| - } |
| 129 | + assert.ifError(err); |
| 130 | + assert.equal('<html>sub</html>', H.stripWs(html)); |
| 131 | + done(); |
| 132 | + } |
132 | 133 |
|
133 |
| - var options = {cache: true, layout: 'default', settings: {views: dirname + '/views'}}; |
134 |
| - var result = render(dirname + '/views/sub/sub.hbs', options, check); |
| 134 | + var options = {cache: true, layout: 'default', settings: {views: dirname + '/views'}}; |
| 135 | + var result = render(dirname + '/views/sub/sub.hbs', options, check); |
135 | 136 | });
|
136 | 137 |
|
137 | 138 | it('should treat layouts that start with "." relative to template', function(done) { function check(err, html) {
|
138 |
| - assert.ifError(err); |
139 |
| - assert.equal('<relative>sub</relative>', H.stripWs(html)); |
140 |
| - done(); |
141 |
| - } |
| 139 | + assert.ifError(err); |
| 140 | + assert.equal('<relative>sub</relative>', H.stripWs(html)); |
| 141 | + done(); |
| 142 | + } |
142 | 143 |
|
143 |
| - var options = {cache: true, layout: './relativeLayout', settings: {views: dirname + '/views'}}; |
144 |
| - var result = render(dirname + '/views/sub/sub.hbs', options, check); |
| 144 | + var options = {cache: true, layout: './relativeLayout', settings: {views: dirname + '/views'}}; |
| 145 | + var result = render(dirname + '/views/sub/sub.hbs', options, check); |
145 | 146 | });
|
146 | 147 |
|
147 | 148 | it('should allow layouts in subfolders', function(done) {
|
@@ -240,45 +241,73 @@ describe('issue-53', function() {
|
240 | 241 | });
|
241 | 242 |
|
242 | 243 | describe('issue-59', function() {
|
243 |
| - var dirname = __dirname + '/issues/59'; |
244 |
| - it('should escape or not', function (done) { |
245 |
| - var hb = hbs.create(); |
| 244 | + var dirname = __dirname + '/issues/59'; |
| 245 | + it('should escape or not', function (done) { |
| 246 | + var hb = hbs.create(); |
246 | 247 |
|
247 |
| - function async(s, cb) { |
248 |
| - cb('<strong>' + s + '</strong>'); |
249 |
| - } |
| 248 | + function async(s, cb) { |
| 249 | + cb('<strong>' + s + '</strong>'); |
| 250 | + } |
250 | 251 |
|
251 |
| - hb.registerAsyncHelper("async", async); |
| 252 | + hb.registerAsyncHelper("async", async); |
252 | 253 |
|
253 |
| - var render = hb.express3({ |
254 |
| - viewsDir: dirname |
255 |
| - }); |
256 |
| - var locals = H.createLocals('express3', dirname); |
| 254 | + var render = hb.express3({ |
| 255 | + viewsDir: dirname |
| 256 | + }); |
| 257 | + var locals = H.createLocals('express3', dirname); |
257 | 258 |
|
258 |
| - render(dirname + '/index.hbs', locals, function (err, html) { |
259 |
| - assert.equal(H.stripWs(html), '<strong>foo</strong><strong>foo</strong>'); |
260 |
| - done(); |
261 |
| - }); |
| 259 | + render(dirname + '/index.hbs', locals, function (err, html) { |
| 260 | + assert.equal(H.stripWs(html), '<strong>foo</strong><strong>foo</strong>'); |
| 261 | + done(); |
262 | 262 | });
|
263 |
| - it('should not escape SafeString', function (done) { |
264 |
| - var hb = hbs.create(); |
| 263 | + }); |
| 264 | + it('should not escape SafeString', function (done) { |
| 265 | + var hb = hbs.create(); |
265 | 266 |
|
266 |
| - function async(s, cb) { |
267 |
| - cb(new hb.SafeString('<em>' + s + '</em>')); |
268 |
| - } |
| 267 | + function async(s, cb) { |
| 268 | + cb(new hb.SafeString('<em>' + s + '</em>')); |
| 269 | + } |
| 270 | + |
| 271 | + hb.registerAsyncHelper('async', async); |
| 272 | + |
| 273 | + var render = hb.express3({ |
| 274 | + viewsDir: dirname |
| 275 | + }); |
| 276 | + var locals = H.createLocals('express3', dirname); |
| 277 | + |
| 278 | + render(dirname + '/index.hbs', locals, function (err, html) { |
| 279 | + assert.equal(H.stripWs(html), '<em>foo</em><em>foo</em>'); |
| 280 | + done(); |
| 281 | + }); |
| 282 | + }); |
| 283 | +}); |
269 | 284 |
|
270 |
| - hb.registerAsyncHelper("async", async); |
| 285 | +describe('issue-73', function() { |
| 286 | + var dirname = path.join(__dirname, 'issues/73'); |
| 287 | + it('should allow compile options', function(done){ |
| 288 | + var hb = hbs.create(); |
| 289 | + var render = hb.express3({ |
| 290 | + viewsDir: dirname, |
| 291 | + partialsDir: dirname + '/partials', |
| 292 | + onCompile: function(eh, source, filename) { |
| 293 | + var options; |
| 294 | + if (filename && filename.indexOf('partials')) { |
| 295 | + options = {preventIndent: true}; |
| 296 | + } |
| 297 | + return eh.handlebars.compile(source, options); |
| 298 | + } |
| 299 | + }); |
271 | 300 |
|
272 |
| - var render = hb.express3({ |
273 |
| - viewsDir: dirname |
274 |
| - }); |
275 |
| - var locals = H.createLocals('express3', dirname); |
| 301 | + var locals = H.createLocals('express3', dirname); |
| 302 | + render(dirname + '/index.hbs', locals, function (err, html) { |
| 303 | + if (err) return console.log('error', err); |
276 | 304 |
|
277 |
| - render(dirname + '/index.hbs', locals, function (err, html) { |
278 |
| - assert.equal(H.stripWs(html), '<em>foo</em><em>foo</em>'); |
279 |
| - done(); |
280 |
| - }); |
| 305 | + assert.ifError(err); |
| 306 | + assert.ok(html.match(/^Hello/m)); |
| 307 | + assert.ok(html.match(/^second line/m)); |
| 308 | + done(); |
281 | 309 | });
|
| 310 | + }); |
282 | 311 | });
|
283 | 312 |
|
284 | 313 |
|
|
0 commit comments