3684f79f5508d16eb3f35069662044f286373a8b
[yaffs-website] / node_modules / kew / test / defer.js
1 var Q = require('../kew')
2
3 // create a deferred which returns a promise
4 exports.testDeferredResolve = function (test) {
5   var val = "ok"
6   var defer = Q.defer()
7
8   defer.promise
9     .then(function (data) {
10       test.equal(data, val, "Promise successfully returned")
11       test.done()
12     })
13
14   setTimeout(function () {
15     defer.resolve(val)
16   }, 50)
17 }
18
19 // make sure a deferred can only resolve once
20 exports.testDeferredResolveOnce = function (test) {
21   var defer = Q.defer()
22
23   try {
24     defer.resolve(true)
25     defer.resolve(true)
26     test.fail("Unable to resolve the same deferred twice")
27   } catch (e) {
28   }
29
30   test.done()
31 }
32
33 // create a deferred which returns a failed promise
34 exports.testDeferredReject = function (test) {
35   var err = new Error("hello")
36   var defer = Q.defer()
37
38   defer.promise
39     .fail(function (e) {
40       test.equal(e, err, "Promise successfully failed")
41       test.done()
42     })
43
44   setTimeout(function () {
45     defer.reject(err)
46   }, 50)
47 }
48
49 // make sure a deferred can only reject once
50 exports.testDeferredRejectOnce = function (test) {
51   var defer = Q.defer()
52
53   try {
54     defer.reject(new Error("nope 1"))
55     defer.reject(new Error("nope 2"))
56     test.fail("Unable to reject the same deferred twice")
57   } catch (e) {
58   }
59
60   test.done()
61 }
62
63 // make sure a deferred can only reject once
64 exports.testDeferAndRejectFail = function (test) {
65   var defer
66
67   try {
68     defer = Q.defer()
69     defer.reject(new Error("nope 1"))
70     defer.resolve(true)
71     test.fail("Unable to reject and resolve the same deferred")
72   } catch (e) {
73     test.ok(true, "Unable to reject and resolve same deferred")
74   }
75
76   try {
77     defer = Q.defer()
78     defer.resolve(true)
79     defer.reject(new Error("nope 1"))
80     test.fail("Unable to reject and resolve the same deferred")
81   } catch (e) {
82     test.ok(true, "Unable to reject and resolve same deferred")
83   }
84
85   test.done()
86 }
87
88 // create a deferred which resolves with a node-standard callback
89 exports.testDeferredResolverSuccess = function (test) {
90   var val = "ok"
91   var defer = Q.defer()
92   var callback = defer.makeNodeResolver()
93
94   defer.promise
95     .then(function (data) {
96       test.equal(data, val, "Promise successfully returned")
97       test.done()
98     })
99
100   setTimeout(function () {
101     callback(null, val)
102   }, 50)
103 }
104
105 // create a deferred which rejects with a node-standard callback
106 exports.testDeferredResolverSuccess = function (test) {
107   var err = new Error("hello")
108   var defer = Q.defer()
109   var callback = defer.makeNodeResolver()
110
111   defer.promise
112     .fail(function (e) {
113       test.equal(e, err, "Promise successfully failed")
114       test.done()
115     })
116
117   setTimeout(function () {
118     callback(err)
119   }, 50)
120 }