e44a7e37b6
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f
237 lines
7.5 KiB
JavaScript
237 lines
7.5 KiB
JavaScript
if(!dojo._hasResource["dojox.data.tests.stores.JsonRestStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
|
dojo._hasResource["dojox.data.tests.stores.JsonRestStore"] = true;
|
|
dojo.provide("dojox.data.tests.stores.JsonRestStore");
|
|
dojo.require("dojox.data.JsonRestStore");
|
|
dojo.require("dojo.data.api.Read");
|
|
dojo.require("dojox.rpc.Service");
|
|
|
|
dojox.data.tests.stores.JsonRestStore.error = function(t, d, errData){
|
|
// summary:
|
|
// The error callback function to be used for all of the tests.
|
|
d.errback(errData);
|
|
}
|
|
var testServices = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.tests.resources", "test.smd"));
|
|
var jsonStore = new dojox.data.JsonRestStore({service:testServices.jsonRestStore});
|
|
|
|
doh.register("dojox.data.tests.stores.JsonRestStore",
|
|
[
|
|
{
|
|
name: "Fetch some items",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// Simple test of a basic fetch on JsonRestStore of a simple query.
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"query",
|
|
onComplete: function(items, request){
|
|
t.is(4, items.length);
|
|
d.callback(true);
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "fetch by id",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// Simple test of a basic fetch on JsonRestStore of a single item.
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"obj1",
|
|
onComplete: function(item, request){
|
|
t.is("Object 1", item.name);
|
|
t.t(jsonStore.hasAttribute(item,"name"));
|
|
t.is(jsonStore.getValues(item,"name").length,1);
|
|
t.t(jsonStore.isItem(item));
|
|
d.callback(true);
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "Modify,save, check by id",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// Fetch an item from a query, modify and save it, and check to see if it was modified correctly
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"query",
|
|
onComplete: function(items, request){
|
|
var now = new Date().getTime();
|
|
jsonStore.setValue(items[0],"updated",now);
|
|
jsonStore.setValue(items[0],"obj",{foo:'bar'});
|
|
jsonStore.setValue(items[0],"obj dup",items[0].obj);
|
|
jsonStore.setValue(items[0],"testArray",[1,2,3,4]);
|
|
jsonStore.save();
|
|
jsonStore.fetch({query:"obj1",
|
|
onComplete: function(item, request){
|
|
t.is("Object 1", item.name);
|
|
t.is(now, item.updated);
|
|
t.is("bar", item.obj.foo);
|
|
t.is(item.obj, item['obj dup']);
|
|
d.callback(true);
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "Post, delete, and put",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// append/post an item, delete it, sort the lists, resort the list, saving each time.
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"obj1",
|
|
onComplete: function(item, request){
|
|
var now = new Date().getTime();
|
|
var testArray = item.testArray;
|
|
var newObject = {"name":"new object"};
|
|
testArray.push(newObject);
|
|
jsonStore.save();
|
|
jsonStore.deleteItem(newObject,{parent:testArray});
|
|
jsonStore.save();
|
|
testArray.sort(function(obj1,obj2) { return obj1 < obj2; });
|
|
jsonStore.save();
|
|
testArray.sort(function(obj1,obj2) { return obj1 > obj2; });
|
|
jsonStore.save();
|
|
d.callback(true);
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "Revert",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// append/post an item, delete it, sort the lists, resort the list, saving each time.
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"obj1",
|
|
onComplete: function(item, request){
|
|
jsonStore.setValue(item,"name","new name");
|
|
jsonStore.setValue(item,"newProp","new value");
|
|
jsonStore.unsetAttribute(item,"updated");
|
|
t.is(jsonStore.getValue(item,"name"),"new name");
|
|
t.is(jsonStore.getValue(item,"newProp"),"new value");
|
|
t.is(jsonStore.getValue(item,"updated"),undefined);
|
|
jsonStore.revert();
|
|
t.is(jsonStore.getValue(item,"name"),"Object 1");
|
|
t.is(jsonStore.getValue(item,"newProp"),undefined);
|
|
t.t(typeof jsonStore.getValue(item,"updated") == 'number');
|
|
d.callback(true);
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "Lazy loading",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// test lazy loading
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"query",
|
|
onComplete: function(items, request){
|
|
/*var item = jsonStore.getValue(items,2); // sync lazy loading
|
|
t.is(item.name == 'Object 3');*/
|
|
jsonStore.getValue(items,3,function(item) { // async lazy loading
|
|
t.is(item.name,'Object 4');
|
|
d.callback(true);
|
|
});
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
{
|
|
name: "Array manipulation",
|
|
timeout: 10000, //10 seconds.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// test array manipulation
|
|
var d = new doh.Deferred();
|
|
jsonStore.fetch({query:"obj1",
|
|
onComplete: function(item, request){
|
|
var testArray = item.testArray;
|
|
testArray.reverse();
|
|
testArray.unshift(testArray.pop());
|
|
jsonStore.onSave = function(data) {
|
|
t.is(data.length,1);
|
|
d.callback(true);
|
|
jsonStore.onSave = function(){};
|
|
};
|
|
jsonStore.save();
|
|
},
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, doh, d)});
|
|
return d; //Object
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "ReadAPI: Fetch_20_Streaming",
|
|
timeout: 10000, //10 seconds. Json can sometimes be slow.
|
|
runTest: function(t) {
|
|
// summary:
|
|
// fetching with paging
|
|
|
|
var d = new doh.Deferred();
|
|
var count = 0;
|
|
|
|
function onItem(item, requestObj){
|
|
t.assertTrue(typeof item == 'number');
|
|
count++;
|
|
}
|
|
function onComplete(items, request){
|
|
t.is(5, count);
|
|
|
|
t.is(null, items);
|
|
d.callback(true);
|
|
}
|
|
//Get everything...
|
|
jsonStore.fetch({
|
|
query: "bigQuery",
|
|
onBegin: null,
|
|
count: 5,
|
|
onItem: onItem,
|
|
onComplete: onComplete,
|
|
onError: dojo.partial(dojox.data.tests.stores.JsonRestStore.error, t, d)
|
|
});
|
|
return d; //Object
|
|
}
|
|
},
|
|
function testReadAPI_functionConformance(t){
|
|
// summary:
|
|
// Simple test read API conformance. Checks to see all declared functions are actual functions on the instances.
|
|
// description:
|
|
// Simple test read API conformance. Checks to see all declared functions are actual functions on the instances.
|
|
|
|
var readApi = new dojo.data.api.Read();
|
|
var passed = true;
|
|
|
|
for(i in readApi){
|
|
if(i.toString().charAt(0) !== '_')
|
|
{
|
|
var member = readApi[i];
|
|
//Check that all the 'Read' defined functions exist on the test store.
|
|
if(typeof member === "function"){
|
|
var testStoreMember = jsonStore [i];
|
|
if(!(typeof testStoreMember === "function")){
|
|
passed = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
);
|
|
|
|
|
|
}
|