1 | define([ |
---|
2 | "doh/main", |
---|
3 | "dojo/Deferred", |
---|
4 | "dojo/promise/first" |
---|
5 | ], function(doh, Deferred, first){ |
---|
6 | var tests = { |
---|
7 | "first() with array argument": function(t){ |
---|
8 | var obj = {}; |
---|
9 | var received; |
---|
10 | first([this.deferred, new Deferred().resolve(obj), {}]).then(function(result){ received = result; }); |
---|
11 | this.deferred.resolve({}); |
---|
12 | t.t(received === obj); |
---|
13 | }, |
---|
14 | |
---|
15 | "with object argument": function(t){ |
---|
16 | var obj = {}; |
---|
17 | var received; |
---|
18 | first({ a: this.deferred, b: new Deferred().resolve(obj), c: {} }).then(function(result){ received = result; }); |
---|
19 | this.deferred.resolve({}); |
---|
20 | t.t(received === obj); |
---|
21 | }, |
---|
22 | |
---|
23 | "first() without arguments": function(t){ |
---|
24 | var received; |
---|
25 | first().then(function(){ received = arguments; }); |
---|
26 | t.is(received.length, 1); |
---|
27 | t.t(typeof received[0] === "undefined"); |
---|
28 | }, |
---|
29 | |
---|
30 | "first() with single non-object argument": function(t){ |
---|
31 | var received; |
---|
32 | first(null).then(function(){ received = arguments; }); |
---|
33 | t.is(received.length, 1); |
---|
34 | t.t(typeof received[0] === "undefined"); |
---|
35 | }, |
---|
36 | |
---|
37 | "first() with empty array": function(t){ |
---|
38 | var received = false; |
---|
39 | first([]).then(function(result){ received = result; }); |
---|
40 | t.t(typeof received === "undefined"); |
---|
41 | }, |
---|
42 | |
---|
43 | "first() with empty object": function(t){ |
---|
44 | var received = false; |
---|
45 | first({}).then(function(result){ received = result; }); |
---|
46 | t.t(typeof received === "undefined"); |
---|
47 | }, |
---|
48 | |
---|
49 | "first() with one rejected promise": function(t){ |
---|
50 | var obj = {}; |
---|
51 | var received; |
---|
52 | first([this.deferred, new Deferred().reject(obj), {}]).then(null, function(result){ received = result; }); |
---|
53 | t.t(received === obj); |
---|
54 | }, |
---|
55 | |
---|
56 | "first() with one promise rejected later": function(t){ |
---|
57 | var obj = {}; |
---|
58 | var received; |
---|
59 | first([this.deferred, new Deferred(), new Deferred()]).then(null, function(result){ received = result; }); |
---|
60 | this.deferred.reject(obj); |
---|
61 | t.t(received === obj); |
---|
62 | }, |
---|
63 | |
---|
64 | "first() with multiple promises rejected later": function(t){ |
---|
65 | var obj = {}; |
---|
66 | var deferred2 = new Deferred(); |
---|
67 | var received; |
---|
68 | first([this.deferred, deferred2, new Deferred()]).then(null, function(result){ received = result; }); |
---|
69 | this.deferred.reject(obj); |
---|
70 | deferred2.reject({}); |
---|
71 | t.t(received === obj); |
---|
72 | }, |
---|
73 | |
---|
74 | "first() cancel only affects returned promise, not those we're waiting for": function(t){ |
---|
75 | var obj = {}; |
---|
76 | var canceled = false; |
---|
77 | var deferred2 = new Deferred(function(){ canceled = true; }); |
---|
78 | var received; |
---|
79 | var promise = first([this.deferred, deferred2, new Deferred()]).then(null, function(result){ received = result; }); |
---|
80 | promise.cancel(obj); |
---|
81 | t.t(received === obj); |
---|
82 | t.f(canceled); |
---|
83 | } |
---|
84 | }; |
---|
85 | |
---|
86 | var wrapped = []; |
---|
87 | for(var name in tests){ |
---|
88 | wrapped.push({ |
---|
89 | name: name, |
---|
90 | setUp: setUp, |
---|
91 | runTest: tests[name] |
---|
92 | }); |
---|
93 | } |
---|
94 | |
---|
95 | function setUp(){ |
---|
96 | this.deferred = new Deferred; |
---|
97 | } |
---|
98 | |
---|
99 | doh.register("tests.promise.first", wrapped); |
---|
100 | }); |
---|