UNPKG

1.97 kBJavaScriptView Raw
1'use stirct';
2
3var request = require('supertest');
4var assert = require('assert');
5var hbs = require('..');
6var asyncApp = require('./apps/async');
7var resolver = require('../lib/resolver');
8
9function makeUserRequest(app, user, cb) {
10 request(app)
11 .get('/')
12 .set('Cookie', 'user=' + user)
13 .end(function(err, res) {
14 if (err) cb(err);
15 if (res.text.search('Hello, ' + user) <= 0) {
16 return cb(new Error('Wrong template send for user ' + user + ': ' + res.text), user);
17 }
18 return cb(null, user, res.text);
19 });
20}
21
22function requestAll(app, users, cb) {
23 var status = {};
24 for(var i = 0; i < users.length; i++) {
25 status[users[i]] = 'Pending';
26 makeUserRequest(app, users[i], function(err, user) {
27 if (err) {
28 status[user] = 'Error: ' + err.message;
29 } else {
30 status[user] = 'Completed'
31 }
32 });
33 }
34 var checkTimer = setInterval(function() {
35 for(var i = 0; i < users.length; i++) {
36 if (status[users[i]] === 'Pending') {
37 return;
38 }
39 }
40 clearInterval(checkTimer);
41 cb(status);
42 }, 100);
43}
44
45describe('async', function() {
46 it('should render all async helpers', function(done) {
47 var app = asyncApp.create(hbs.create(), 'production');
48 requestAll(app, ['jt','anna','joe','jeff','jane'], function(results) {
49 assert.equal(results.jt, 'Completed');
50 assert.equal(results.anna, 'Completed');
51 assert.equal(results.joe, 'Completed');
52 assert.equal(results.jeff, 'Completed');
53 assert.equal(results.jane, 'Completed');
54 done();
55 });
56 });
57
58 it('should render nested async helpers', function(done) {
59 var app = asyncApp.create(hbs.create(), 'production');
60 makeUserRequest(app, 'jt', function(err, user, results) {
61 if (err) {
62 return done(err);
63 }
64 assert.equal(false, resolver.hasResolvers(results));
65 assert.equal(-1, results.search('This should not show!'))
66 done();
67 });
68 });
69});