aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/rpc/tests/stores/JsonRestStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/rpc/tests/stores/JsonRestStore.js')
-rw-r--r--includes/js/dojox/rpc/tests/stores/JsonRestStore.js237
1 files changed, 237 insertions, 0 deletions
diff --git a/includes/js/dojox/rpc/tests/stores/JsonRestStore.js b/includes/js/dojox/rpc/tests/stores/JsonRestStore.js
new file mode 100644
index 0000000..25e0fc7
--- /dev/null
+++ b/includes/js/dojox/rpc/tests/stores/JsonRestStore.js
@@ -0,0 +1,237 @@
+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;
+ }
+ }
+ }
+ }
+ }
+ ]
+);
+
+
+}