1 | 'use stirct';
|
2 |
|
3 | var request = require('supertest');
|
4 | var assert = require('assert');
|
5 | var hbs = require('..');
|
6 | var asyncApp = require('./apps/async');
|
7 | var resolver = require('../lib/resolver');
|
8 |
|
9 | function 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 |
|
22 | function 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 |
|
45 | describe('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 | });
|