Location: A review of cardiac cellular electrophysiology models @ 98909b01e6b2 / dojo-presentation / js / dojo / dojox / data / tests / ClientFilter.js

Author:
David Nickerson <nickerso@users.sourceforge.net>
Date:
2009-07-07 17:11:57+12:00
Desc:
update for modified HH graphs in tutorial description
Permanent Source URI:
https://models.physiomeproject.org/workspace/a1/rawfile/98909b01e6b21653a5e1cd28865dd259c586d490/dojo-presentation/js/dojo/dojox/data/tests/ClientFilter.js

dojo.provide("dojox.data.tests.ClientFilter");
dojo.require("dojox.data.ClientFilter");
dojo.require("dojox.data.JsonRestStore");


mockService = function(query){
	var dfd = new dojo.Deferred();
	setTimeout(function(){
		dfd.callback([{firstName:"John",lastName:"Smith",__id:"mock/1"},
				{firstName:"Jim",lastName:"Smith",__id:"mock/2"},
				{firstName:"Jill",lastName:"Smith",__id:"mock/3"},
				{firstName:"Jerry",lastName:"Smith",__id:"mock/4"}]);
	},10);
	return dfd;
};
mockService.servicePath = "mock/";
jsonStore = new dojox.data.JsonRestStore({service:mockService});

doh.register("dojox.data.tests.ClientFilter", 
	[
		function updateWhileLoading(t) {
			var d = new doh.Deferred();
			jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], 
				onComplete: function(items, request){
					t.is(5, items.length); // make sure it was added
					t.is(newJack,items[4]); // make sure it is in the right location
					console.log("updateWhileLoading",items[4],newJack);
					d.callback(true);					
				}
			});
			newJack = jsonStore.newItem({firstName:"Jack",lastName:"Smith"}); // this should fire while we are waiting for the fetch response
			return d;
		},
		function makeChanges(t) {
			//	summary: 
			//		Simple test of a basic fetch on JsonRestStore of a simple query.
			var d = new doh.Deferred();
			jsonStore.fetch({queryOptions:{cache:true},query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], 
				onComplete: function(items, request){
					t.is(5, items.length); // make sure it was added
					t.is(newJack,items[4]); // make sure it is in the right location
					console.log("items[4]",items[4]);
					var newJoe = jsonStore.newItem({firstName:"Joe",lastName:"Smith"});
					t.is(5, items.length); // make sure it was not added yet
					jsonStore.updateResultSet(items, request);
					t.is(6, items.length); // make sure it was added
					t.is(newJoe,items[1]); // make sure it is in the right location
					var jackJones = jsonStore.newItem({firstName:"Jack",lastName:"Jones"});
					jsonStore.updateResultSet(items, request);
					t.is(6, items.length); // make sure it is not added
					jsonStore.setValue(newJoe,"firstName","Jesse");
					jsonStore.updateResultSet(items, request);
					t.is(6, items.length); // make sure it is the same
					t.is(newJoe,items[3]); // make sure it is in the new right location
					t.f(newJoe==items[1]); // make sure it is not in the old location
					jsonStore.deleteItem(newJack);
					jsonStore.updateResultSet(items, request);
					t.is(5, items.length); // make sure it is has been removed
					jsonStore.setValue(newJoe,"lastName","Baker");
					jsonStore.updateResultSet(items, request);
					t.is(4, items.length); // make sure it is has been removed
					jsonStore.setValue(jackJones,"lastName","Smith");
					jsonStore.updateResultSet(items, request);
					t.is(5, items.length); // make sure it is has been added
				}
			});
			console.log("sent first");
			var finished;
			jsonStore.fetch({query:{lastName:"Smith",firstName:"Jack"},sort:[{attribute:"firstName",descending:true}], 
				onComplete: function(items, request){
					console.log("items first",items);
					finished = true;
					t.is(1, items.length); // make sure we get the correct number of items
					d.callback(true);
				}
			});
			console.log("sent seconds");
			t.f(finished); // this should finish synchronously, because we should have it in the cache
			return d; //Object
		},
		function cachedResults(t) {
			var d = new doh.Deferred();
			var finished;
			jsonStore.fetch({query:{lastName:"Smith",firstName:"Jack"},sort:[{attribute:"firstName",descending:true}], 
				onComplete: function(items, request){
					console.log("items",items);
					finished = true;
					t.is(1, items.length); // make sure we get the correct number of items
					d.callback(true);
				}
			});
			t.t(finished); // this should finish synchronously, because we should have it in the cache
			return d;
		},
		function sorting(t) {
			var d = new doh.Deferred();
			var finished;
			// test sorting. Descending order should be John,Jim,Jill,Jerry,Jack
			jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], 
				onComplete: function(items, request){
					var last = jsonStore.getValue(items[0], "firstName");
					console.log("last name: ",last, items[0]);

					t.is("John", last); // make sure we get the correct number of items

					jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:false}], 
						onComplete: function(items, request){
							var first = jsonStore.getValue(items[0], "firstName");
							console.log("first name",first, items[0]);
							finished = true;
							t.is("Jack", first); // make sure we get the correct number of items

							d.callback(true);
						}
					});
				}
			});
			t.t(finished); // this should finish synchronously, because we should have it in the cache
			return d;
		}
		
	]
);