source: Dev/trunk/src/client/dojo/tests/promise/first.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.8 KB
Line 
1define([
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});
Note: See TracBrowser for help on using the repository browser.