1 | dojo.provide("dojo.tests.data.ObjectStore"); |
---|
2 | dojo.require("dojo.data.ObjectStore"); |
---|
3 | dojo.require("dojo.store.JsonRest"); |
---|
4 | dojo.require("dojo.store.Memory"); |
---|
5 | |
---|
6 | (function(){ |
---|
7 | var restStore = new dojo.store.JsonRest({target: dojo.moduleUrl("dojo.tests.store", "/")}); |
---|
8 | var memoryStore = new dojo.store.Memory({ |
---|
9 | data: [ |
---|
10 | {id: 1, name: "one", prime: false}, |
---|
11 | {id: 2, name: "two", even: true, prime: true}, |
---|
12 | {id: 3, name: "three", prime: true}, |
---|
13 | {id: 4, name: "four", even: true, prime: false}, |
---|
14 | {id: 5, name: "five", prime: true} |
---|
15 | ] |
---|
16 | }); |
---|
17 | |
---|
18 | var dataStore = new dojo.data.ObjectStore({objectStore: restStore}); |
---|
19 | var memoryDataStore = new dojo.data.ObjectStore({objectStore: memoryStore}); |
---|
20 | tests.register("tests.data.ObjectStore", |
---|
21 | [ |
---|
22 | function testFetchByIdentity(t){ |
---|
23 | var d = new doh.Deferred(); |
---|
24 | dataStore.fetchItemByIdentity({identity: "node1.1", onItem: function(object){ |
---|
25 | t.is(object.name, "node1.1"); |
---|
26 | t.is(object.someProperty, "somePropertyA1"); |
---|
27 | d.callback(true); |
---|
28 | }}); |
---|
29 | return d; |
---|
30 | }, |
---|
31 | function testQuery(t){ |
---|
32 | var d = new doh.Deferred(); |
---|
33 | dataStore.fetch({query:"treeTestRoot", onComplete: function(results){ |
---|
34 | var object = results[0]; |
---|
35 | t.is(object.name, "node1"); |
---|
36 | t.is(object.someProperty, "somePropertyA"); |
---|
37 | d.callback(true); |
---|
38 | }}); |
---|
39 | return d; |
---|
40 | }, |
---|
41 | function testNewItem(t){ |
---|
42 | var newItem = memoryDataStore.newItem({ |
---|
43 | foo: "bar", |
---|
44 | id: Math.random() |
---|
45 | }); |
---|
46 | memoryDataStore.setValue(newItem, "prop1", 1); |
---|
47 | memoryDataStore.save(); |
---|
48 | memoryDataStore.setValue(newItem, "prop1", 10); |
---|
49 | memoryDataStore.revert(); |
---|
50 | t.is(memoryDataStore.getValue(newItem, "prop1"), 1); |
---|
51 | memoryDataStore.fetchItemByIdentity({ |
---|
52 | identity: memoryDataStore.getIdentity(newItem), |
---|
53 | onItem: function(item){ |
---|
54 | t.is(memoryDataStore.getValue(item, "foo"), "bar"); |
---|
55 | memoryDataStore.setValue(newItem, "prop2", 2); |
---|
56 | t.is(memoryDataStore.getValue(item, "prop1"), 1); |
---|
57 | t.is(memoryDataStore.getValue(item, "prop2"), 2); |
---|
58 | }}); |
---|
59 | var newItem = memoryDataStore.newItem({ |
---|
60 | foo: "bar", |
---|
61 | id: Math.random() |
---|
62 | }); |
---|
63 | memoryDataStore.deleteItem(newItem); |
---|
64 | memoryDataStore.save(); |
---|
65 | memoryDataStore.fetchItemByIdentity({ |
---|
66 | identity: memoryDataStore.getIdentity(newItem), |
---|
67 | onItem: function(item){ |
---|
68 | t.is(item, null); |
---|
69 | } |
---|
70 | }); |
---|
71 | }, |
---|
72 | function testMemoryQuery(t){ |
---|
73 | var d = new doh.Deferred(); |
---|
74 | memoryDataStore.fetch({query:{name:"one"}, onComplete: function(results){ |
---|
75 | var object = results[0]; |
---|
76 | t.is(results.length, 1); |
---|
77 | t.is(object.name, "one"); |
---|
78 | d.callback(true); |
---|
79 | }}); |
---|
80 | return d; |
---|
81 | }, |
---|
82 | function testMemoryQueryEmpty(t){ |
---|
83 | var d = new doh.Deferred(); |
---|
84 | memoryDataStore.fetch({query:{name:"o"}, onComplete: function(results){ |
---|
85 | t.is(results.length, 0); |
---|
86 | d.callback(true); |
---|
87 | }}); |
---|
88 | return d; |
---|
89 | }, |
---|
90 | function testMemoryQueryWithWildcard(t){ |
---|
91 | var d = new doh.Deferred(); |
---|
92 | memoryDataStore.fetch({query:{name:"f*"}, onComplete: function(results){ |
---|
93 | var object = results[0]; |
---|
94 | t.is(results.length, 2); |
---|
95 | t.is(object.name, "four"); |
---|
96 | d.callback(true); |
---|
97 | }}); |
---|
98 | return d; |
---|
99 | }, |
---|
100 | function testMemoryQueryWithEscapedWildcard(t){ |
---|
101 | var d = new doh.Deferred(); |
---|
102 | memoryDataStore.fetch({query:{name:"s\\*"}, onComplete: function(results){ |
---|
103 | t.is(results.length, 0); |
---|
104 | }}); |
---|
105 | var newItem = memoryDataStore.newItem({ |
---|
106 | name: "s*", |
---|
107 | id: Math.random() |
---|
108 | }); |
---|
109 | memoryDataStore.save(); |
---|
110 | memoryDataStore.fetch({query:{name:"s\\*"}, onComplete: function(results){ |
---|
111 | var object = results[0]; |
---|
112 | t.is(results.length, 1); |
---|
113 | t.is(object.name, "s*"); |
---|
114 | d.callback(true); |
---|
115 | }}); |
---|
116 | return d; |
---|
117 | }, |
---|
118 | function testMemoryQueryWithWildcardCaseInsensitive(t){ |
---|
119 | var d = new doh.Deferred(); |
---|
120 | memoryDataStore.fetch({query:{name:"F*"}, queryOptions: {ignoreCase: true}, onComplete: function(results){ |
---|
121 | var object = results[0]; |
---|
122 | t.is(results.length, 2); |
---|
123 | t.is(object.name, "four"); |
---|
124 | d.callback(true); |
---|
125 | }}); |
---|
126 | return d; |
---|
127 | } |
---|
128 | ] |
---|
129 | ); |
---|
130 | |
---|
131 | })(); |
---|