UNPKG

dojox

Version:

Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.

222 lines (217 loc) 7.37 kB
define([ "doh", "dojo/_base/array", "dojo/_base/config", "dojo/_base/declare", "dojo/_base/lang", "dojo/Deferred", "dojo/store/util/QueryResults", "dijit/_WidgetBase", "dojox/mvc/at", "dijit/_TemplatedMixin", "dijit/_WidgetsInTemplateMixin", "dijit/_Container", "dijit/form/TextBox", "dojox/mvc/getStateful", "dojox/mvc/StoreRefController", "dojox/mvc/EditStoreRefListController", "dojo/store/JsonRest", "dojo/store/Memory", "dojo/store/Observable", "dojo/when", "dojox/mvc/WidgetList", "dojo/text!dojox/mvc/tests/test_WidgetList_WidgetListInTemplate.html", "dojo/text!dojox/mvc/tests/test_WidgetList_childTemplate.html", "dojo/text!dojox/mvc/tests/test_WidgetList_childBindings.json" ], function(doh, array, config, declare, lang, Deferred, QueryResults, _WidgetBase, at, _TemplatedMixin, _WidgetsInTemplateMixin, _Container, _TextBox, getStateful, StoreRefController, EditStoreRefListController, JsonRest, Memory, Observable, when, WidgetList, template, childTemplate, childBindings){7 var data = { "identifier": "Serial", "items": [ { "Serial" : "A111", "First" : "Anne", "Last" : "Ackerman", "Email" : "a.a@test.com" }, { "Serial" : "B111", "First" : "Ben", "Last" : "Beckham", "Email" : "b.b@test.com" }, { "Serial" : "I111", "First" : "Irene", "Last" : "Ira", "Email" : "i.i@test.com" }, { "Serial" : "J111", "First" : "John", "Last" : "Jacklin", "Email" : "j.j@test.com" } ] }; ctrl = new EditStoreRefListController({ store : new Memory({ data : data }) }); when(ctrl.getStore("A111"), function(value) { doh.register("dojox.mvc.tests.doh.StoreRefControllerTest", [ function getStore(){ doh.is(value.Serial, "A111", "Serial should be set"); doh.is(value.First, "Anne", "First should be set"); doh.is(value.Last, "Ackerman", "Last should be set"); doh.is(value.Email, "a.a@test.com", "Email should be set"); }, function queryStore(){ when(ctrl.queryStore(), function(results) { doh.is(results[0].Serial, "A111", "Serial should be set"); doh.is(results[0].First, "Anne", "First should be set"); doh.is(results[0].Last, "Ackerman", "Last should be set"); doh.is(results[0].Email, "a.a@test.com", "Email should be set"); }); }, function addStore(){ var newId2 = "newObj222-" + Math.random(); var newObj2 = { "Serial" : newId2, "First" : "newObj2", "Last" : "newObj2 Last", "Email" : "new.obj2@test.com" }; when(ctrl.addStore(newObj2), function(results) { doh.is(results, newId2, "id should be returned"); when(ctrl.getStore(newId2), function(value) { doh.is(value.Serial, newId2, "Serial should be set"); doh.is(value.First, "newObj2", "First should be set"); doh.is(value.Last, "newObj2 Last", "Last should be set"); doh.is(value.Email, "new.obj2@test.com", "Email should be set"); }); }); }, function putStore(){ var newId1 = "newObj111-" + Math.random(); var newObj = { "Serial" : newId1, "First" : "newObj", "Last" : "newObj Last", "Email" : "new.obj@test.com" }; when(ctrl.putStore(newObj), function(results) { doh.is(results, newId1, "id should be returned"); when(ctrl.getStore(results), function(value) { doh.is(value.Serial, newId1, "Serial should be set"); doh.is(value.First, "newObj", "First should be set"); doh.is(value.Last, "newObj Last", "Last should be set"); doh.is(value.Email, "new.obj@test.com", "Email should be set"); }); }); }, function removeStore(){ when(ctrl.queryStore(), function(results) { var remObjId = results[1].Serial; when(ctrl.removeStore(remObjId), function(results) { doh.is(results, true, "should return true from removeStore"); }); }); }, function observableAsyncStore(){ var AsyncMemoryStore = declare(Memory, {}); for(var s in {put: 1, remove: 1, query: 1}){ (function(s){ AsyncMemoryStore.prototype[s] = function(){ var args = arguments, dfd = new Deferred(), _self = this; setTimeout(function(){ dfd.resolve(Memory.prototype[s].apply(_self, args)); }, 500); return QueryResults(dfd.promise); }; })(s); } var ctrl = new EditStoreRefListController({store: Observable(new AsyncMemoryStore({idProperty: "Serial", data: data}))}), updates = [], dfd = new doh.Deferred(); ctrl.queryStore({Last: "Ackerman"}).observe(dfd.getTestErrback(function(object, previousIndex, newIndex){ updates.push(lang.delegate(object, { previousIndex: previousIndex, newIndex: newIndex })); if(updates.length == 2){ doh.is({ Serial: "D111", First: "David", Last: "Ackerman", Email: "d.a@test.com", previousIndex: -1, newIndex: 1 }, updates[0], "The observable callback should catch the addition"); doh.is({ Serial: "A111", First: "Anne", Last: "Ackerman", Email: "a.a@test.com", previousIndex: 0, newIndex: -1 }, updates[1], "The observable callback should catch the removal"); dfd.callback(1); } })); ctrl.addStore({ Serial: "D111", First: "David", Last: "Ackerman", Email: "d.a@test.com" }); ctrl.removeStore("A111"); return dfd; }, function observeJsonRest(){ // Test we can observe results from a store that DOES defer results. var store = new JsonRest({ target: require.toUrl("dojox/mvc/tests/_data/"), put: function(o){ var dfd = new Deferred(); setTimeout(function(){ dfd.resolve(o.id); }, 500); return dfd.promise; }, // Intead of making REST call, just return the ID asynchronously remove: function(){ var dfd = new Deferred(); setTimeout(function(){ dfd.resolve(true); }, 500); return dfd.promise; } // Intead of making REST call, just return true asynchronously }); var ctrl = new StoreRefController({store : new Observable(store)}), dfd = new doh.Deferred(), updates = []; ctrl.queryStore("treeTestRoot").observe(dfd.getTestErrback(function(object, previousIndex, newIndex){ updates.push(lang.delegate(object, { previousIndex: previousIndex, newIndex: newIndex })); if(updates.length == 2){ doh.is({ id: "node6", name: "node6", someProperty: "somePropertyA", previousIndex: -1, newIndex: 0 }, updates[0], "The observable callback should catch the addition"); doh.is({ id: "node4", name: "node4", someProperty: "somePropertyA", previousIndex: 4, newIndex: -1 }, updates[1], "The observable callback should catch the removal"); dfd.callback(1); } })); ctrl.addStore({ id: "node6", name: "node6", someProperty: "somePropertyA" }); ctrl.removeStore("node4"); return dfd; } ]); }); });