UNPKG

2.55 kBJavaScriptView Raw
1var assert = require('assert');
2var defer = require('../lib/sync_defer').defer;
3
4suite("Sync promise", function() {
5
6test('ResolveThen', function() {
7 var resolved = false;
8 var d = defer();
9 d.resolve('frob');
10 d.promise.then(function(f) { if (f === 'frob') resolved = true; });
11 assert(resolved);
12});
13
14test('ThenResolve', function() {
15 var resolved = false;
16 var d = defer();
17 d.promise.then(function(f) { if (f === 'frob') resolved = true; });
18 d.resolve('frob');
19 assert(resolved);
20});
21
22test('ThenThenResolve', function() {
23 var d = defer(), called = false;
24 d.promise
25 .then(function(f) { if (f === 'foo') return 'bar'; })
26 .then(function(b) { if (b === 'bar') called = true; });
27 d.resolve('foo');
28 assert(called);
29});
30
31test('ResolveThenThen', function() {
32 var d = defer(), called = false;
33 d.resolve('foo');
34 d.promise
35 .then(function(f) { if (f === 'foo') return 'bar'; })
36 .then(function(b) { if (b === 'bar') called = true; });
37 assert(called);
38});
39
40test('RejectThen', function() {
41 var called = false;
42 var d = defer();
43 d.reject('frob');
44 d.promise.then(assert.fail,
45 function(f) {
46 if (f === 'frob') called = true; });
47 assert(called);
48});
49
50test('ThenReject', function() {
51 var called = false;
52 var d = defer();
53 d.promise.then(assert.fail,
54 function(f) {
55 if (f === 'frob') called = true; });
56 d.reject('frob');
57 assert(called);
58});
59
60test('ThenThrowThen', function() {
61 var called = false;
62 var d = defer();
63 d.promise
64 .then(function() { throw 'foo'; })
65 .then(assert.fail, function(f) { if (f === 'foo') called = true; });
66 d.resolve();
67 assert(called);
68});
69
70// Test that errors will get propagated when there's no explicit
71// errback in the middle.
72test('ThenThrowThenThen', function() {
73 var called = false;
74 var d = defer();
75 d.promise
76 .then(function() { throw 'foo'; })
77 .then(function() { return 'bar'; })
78 .then(assert.fail, function(f) { if ( f=== 'foo') called = true; });
79 d.resolve();
80 assert(called);
81});
82
83test('RejectThenThen', function() {
84 var called = false;
85 var d = defer();
86 d.reject('foo');
87 d.promise
88 .then(assert.fail)
89 .then(assert.fail, function(e) {
90 if (e === 'foo') called = true;
91 });
92 assert(called);
93});
94
95test('ResolveThenThen', function() {
96 var called = false;
97 var d = defer();
98 d.resolve('foo');
99 d.promise
100 .then(null, assert.fail)
101 .then(function(f) {
102 if (f === 'foo') called = true;
103 }, assert.fail);
104 assert(called);
105});
106
107});