Initial import
[darksolar] / node_modules / mongoose / test / promise.test.js
1
2 /**
3  * Module dependencies.
4  */
5
6 var should = require('should')
7   , Promise = require('../lib/promise');
8
9 /**
10  * Test.
11  */
12
13 module.exports = {
14
15   'test that events fire right away after complete()ing': function (beforeExit) {
16     var promise = new Promise()
17       , called = 0;
18
19     promise.on('complete', function (a, b) {
20       a.should.eql('1');
21       b.should.eql('2');
22       called++;
23     });
24
25     promise.complete('1', '2');
26
27     promise.on('complete', function (a, b) {
28       a.should.eql('1');
29       b.should.eql('2');
30       called++;
31     });
32
33     beforeExit(function () {
34       called.should.eql(2);
35     });
36   },
37
38   'test that events fire right away after error()ing': function (beforeExit) {
39     var promise = new Promise()
40       , called = 0;
41
42     promise.on('err', function (err) {
43       err.should.be.an.instanceof(Error);
44       called++;
45     });
46
47     promise.error(new Error('booyah'));
48
49     promise.on('err', function (err) {
50       err.should.be.an.instanceof(Error);
51       called++;
52     });
53
54     beforeExit(function () {
55       called.should.eql(2);
56     });
57   },
58
59   'test errback+callback from constructor': function (beforeExit) {
60     var promise = new Promise(function (err) {
61           err.should.be.an.instanceof(Error);
62           called++;
63         })
64       , called = 0;
65
66     promise.error(new Error('dawg'));
67
68     beforeExit(function () {
69       called.should.eql(1);
70     });
71   },
72
73   'test errback+callback after complete()ing': function (beforeExit) {
74     var promise = new Promise()
75       , called = 0;
76
77     promise.complete('woot');
78
79     promise.addBack(function (err, data){
80       data.should.eql('woot');
81       called++;
82     });
83
84     promise.addBack(function (err, data){
85       should.strictEqual(err, null);
86       called++;
87     });
88
89     beforeExit(function () {
90       called.should.eql(2);
91     });
92   },
93
94   'test errback+callback after error()ing': function (beforeExit) {
95     var promise = new Promise()
96       , called = 0;
97
98     promise.error(new Error('woot'));
99
100     promise.addBack(function (err){
101       err.should.be.an.instanceof(Error);
102       called++;
103     });
104
105     promise.addBack(function (err){
106       err.should.be.an.instanceof(Error);
107       called++;
108     });
109
110     beforeExit(function () {
111       called.should.eql(2);
112     });
113   },
114
115   'test addCallback shortcut': function (beforeExit) {
116     var promise = new Promise()
117       , called = 0;
118
119     promise.addCallback(function (woot) {
120       should.strictEqual(woot, undefined);
121       called++;
122     });
123
124     promise.complete();
125
126     beforeExit(function () {
127       called.should.eql(1);
128     });
129   },
130
131   'test addErrback shortcut': function (beforeExit) {
132     var promise = new Promise()
133       , called = 0;
134
135     promise.addErrback(function (err) {
136       err.should.be.an.instanceof(Error);
137       called++;
138     });
139
140     promise.error(new Error);
141
142     beforeExit(function () {
143       called.should.eql(1);
144     });
145   },
146
147   'test return value of #on()': function () {
148     var promise = new Promise()
149     promise.on('jump', function(){}).should.be.an.instanceof(Promise);
150   },
151
152   'test return value of #addCallback()': function () {
153     var promise = new Promise()
154     promise.addCallback(function(){}).should.be.an.instanceof(Promise);
155   },
156
157   'test return value of #addErrback()': function () {
158     var promise = new Promise()
159     promise.addErrback(function(){}).should.be.an.instanceof(Promise);
160   },
161
162   'test return value of #addBack()': function () {
163     var promise = new Promise()
164     promise.addBack(function(){}).should.be.an.instanceof(Promise);
165   }
166
167 };