can
Version:
MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.
131 lines (128 loc) • 3.94 kB
JavaScript
dojo.provide("dojo.tests.data.ObjectStore");
dojo.require("dojo.data.ObjectStore");
dojo.require("dojo.store.JsonRest");
dojo.require("dojo.store.Memory");
(function(){
var restStore = new dojo.store.JsonRest({target: dojo.moduleUrl("dojo.tests.store", "/")});
var memoryStore = new dojo.store.Memory({
data: [
{id: 1, name: "one", prime: false},
{id: 2, name: "two", even: true, prime: true},
{id: 3, name: "three", prime: true},
{id: 4, name: "four", even: true, prime: false},
{id: 5, name: "five", prime: true}
]
});
var dataStore = new dojo.data.ObjectStore({objectStore: restStore});
var memoryDataStore = new dojo.data.ObjectStore({objectStore: memoryStore});
tests.register("tests.data.ObjectStore",
[
function testFetchByIdentity(t){
var d = new doh.Deferred();
dataStore.fetchItemByIdentity({identity: "node1.1", onItem: function(object){
t.is(object.name, "node1.1");
t.is(object.someProperty, "somePropertyA1");
d.callback(true);
}});
return d;
},
function testQuery(t){
var d = new doh.Deferred();
dataStore.fetch({query:"treeTestRoot", onComplete: function(results){
var object = results[0];
t.is(object.name, "node1");
t.is(object.someProperty, "somePropertyA");
d.callback(true);
}});
return d;
},
function testNewItem(t){
var newItem = memoryDataStore.newItem({
foo: "bar",
id: Math.random()
});
memoryDataStore.setValue(newItem, "prop1", 1);
memoryDataStore.save();
memoryDataStore.setValue(newItem, "prop1", 10);
memoryDataStore.revert();
t.is(memoryDataStore.getValue(newItem, "prop1"), 1);
memoryDataStore.fetchItemByIdentity({
identity: memoryDataStore.getIdentity(newItem),
onItem: function(item){
t.is(memoryDataStore.getValue(item, "foo"), "bar");
memoryDataStore.setValue(newItem, "prop2", 2);
t.is(memoryDataStore.getValue(item, "prop1"), 1);
t.is(memoryDataStore.getValue(item, "prop2"), 2);
}});
var newItem = memoryDataStore.newItem({
foo: "bar",
id: Math.random()
});
memoryDataStore.deleteItem(newItem);
memoryDataStore.save();
memoryDataStore.fetchItemByIdentity({
identity: memoryDataStore.getIdentity(newItem),
onItem: function(item){
t.is(item, null);
}
});
},
function testMemoryQuery(t){
var d = new doh.Deferred();
memoryDataStore.fetch({query:{name:"one"}, onComplete: function(results){
var object = results[0];
t.is(results.length, 1);
t.is(object.name, "one");
d.callback(true);
}});
return d;
},
function testMemoryQueryEmpty(t){
var d = new doh.Deferred();
memoryDataStore.fetch({query:{name:"o"}, onComplete: function(results){
t.is(results.length, 0);
d.callback(true);
}});
return d;
},
function testMemoryQueryWithWildcard(t){
var d = new doh.Deferred();
memoryDataStore.fetch({query:{name:"f*"}, onComplete: function(results){
var object = results[0];
t.is(results.length, 2);
t.is(object.name, "four");
d.callback(true);
}});
return d;
},
function testMemoryQueryWithEscapedWildcard(t){
var d = new doh.Deferred();
memoryDataStore.fetch({query:{name:"s\\*"}, onComplete: function(results){
t.is(results.length, 0);
}});
var newItem = memoryDataStore.newItem({
name: "s*",
id: Math.random()
});
memoryDataStore.save();
memoryDataStore.fetch({query:{name:"s\\*"}, onComplete: function(results){
var object = results[0];
t.is(results.length, 1);
t.is(object.name, "s*");
d.callback(true);
}});
return d;
},
function testMemoryQueryWithWildcardCaseInsensitive(t){
var d = new doh.Deferred();
memoryDataStore.fetch({query:{name:"F*"}, queryOptions: {ignoreCase: true}, onComplete: function(results){
var object = results[0];
t.is(results.length, 2);
t.is(object.name, "four");
d.callback(true);
}});
return d;
}
]
);
})();