source: Dev/trunk/src/client/dojo/tests/store/JsonRest.js

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

Added Dojo 1.9.3 release.

File size: 2.7 KB
Line 
1define(["doh/main", "require", "dojo/_base/lang", "dojo/store/JsonRest"], function(doh, require, lang, JsonRest){
2        var globalHeaders = {
3                        "test-global-header-a": true,
4                        "test-global-header-b": "yes"
5                },
6                requestHeaders = {
7                        "test-local-header-a": true,
8                        "test-local-header-b": "yes",
9                        "test-override": "overridden"
10                },
11                store = new JsonRest({
12                        target: require.toUrl("dojo/tests/store/x.y").match(/(.+)x\.y$/)[1],
13                        headers: lang.mixin({ "test-override": false }, globalHeaders)
14                });
15
16        doh.register("tests.store.JsonRest",
17                [
18                        function testGet(t){
19                                var d = new doh.Deferred();
20                                store.get("node1.1").then(function(object){
21                                        t.is(object.name, "node1.1");
22                                        t.is(object.someProperty, "somePropertyA1");
23                                        d.callback(true);
24                                });
25                                return d;
26                        },
27                        function testQuery(t){
28                                var d = new doh.Deferred();
29                                store.query("treeTestRoot").then(function(results){
30                                        var object = results[0];
31                                        t.is(object.name, "node1");
32                                        t.is(object.someProperty, "somePropertyA");
33                                        d.callback(true);
34                                });
35                                return d;
36                        },
37                        function testQueryIterative(t){
38                                var d = new doh.Deferred();
39                                var i = 0;
40                                store.query("treeTestRoot").forEach(function(object){
41                                        i++;
42                                        console.log(i);
43                                        t.is(object.name, "node" + i);
44                                }).then(function(){
45                                        d.callback(true);
46                                });
47                                return d;
48                        },
49                        function testHeaders(t){
50                                var d = new doh.Deferred(),
51                                        error,
52                                        expected = 0,
53                                        received = 0;
54
55                                // NOTE: Because HTTP headers are case-insensitive they should always be provided as all-lowercase
56                                // strings to simplify testing.
57                                function runTest(method, args){
58                                        expected++;
59
60                                        store[method].apply(store, args).then(function(result){
61                                                received++;
62
63                                                if(error){
64                                                        return;
65                                                }
66
67                                                var k;
68
69                                                for(k in requestHeaders){
70                                                        if(!result.headers.hasOwnProperty(k) || "" + result.headers[k] !== "" + requestHeaders[k]){
71                                                                error = true;
72                                                                d.errback(new Error("Header mismatch in " + method + ": " + k));
73                                                                return;
74                                                        }
75                                                }
76
77                                                for(k in globalHeaders){
78                                                        if(!result.headers.hasOwnProperty(k) || "" + result.headers[k] !== "" + globalHeaders[k]){
79                                                                error = true;
80                                                                d.errback(new Error("Global header mismatch in " + method + ": " + k));
81                                                                return;
82                                                        }
83                                                }
84
85                                                if(expected === received){
86                                                        d.callback(true);
87                                                }
88                                        });
89                                }
90
91                                runTest("get", [ "index.php", requestHeaders ]);
92                                runTest("get", [ "index.php", { headers: requestHeaders } ]);
93                                runTest("remove", [ "index.php", { headers: requestHeaders } ]);
94                                runTest("query", [ {}, { headers: requestHeaders, start: 20, count: 42 } ]);
95                                runTest("put", [ {}, { headers: requestHeaders } ]);
96                                runTest("add", [ {}, { headers: requestHeaders } ]);
97
98                                return d;
99                        }
100                ]
101        );
102});
Note: See TracBrowser for help on using the repository browser.