📄 itemfilewritestore.js
字号:
return deferred; //Object }, function testWriteAPI_deleteItem(){ // summary: // Simple test of the deleteItem API // description: // Simple test of the deleteItem API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var deferred = new doh.Deferred(); function onComplete(items, request){ doh.assertEqual(1, items.length); var item = items[0]; doh.assertTrue(store.containsValue(item, "name", "Egypt")); doh.assertTrue(store.isDirty(item) == false); doh.assertTrue(!store.isDirty()); store.deleteItem(item); doh.assertTrue(store.isDirty(item)); doh.assertTrue(store.isDirty()); function onCompleteToo(itemsToo, requestToo) { doh.assertEqual(0, itemsToo.length); deferred.callback(true); } store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); } function onError(error, request){ deferred.errback(error); } store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); return deferred; //Object }, function testWriteAPI_isDirty(){ // summary: // Simple test of the isDirty API // description: // Simple test of the isDirty API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var deferred = new doh.Deferred(); function onComplete(items, request) { doh.assertEqual(1, items.length); var item = items[0]; doh.assertTrue(store.containsValue(item, "name", "Egypt")); store.setValue(item, "name", "Egypt 2"); doh.assertTrue(store.getValue(item, "name") == "Egypt 2"); doh.assertTrue(store.isDirty(item)); deferred.callback(true); } function onError(error, request) { deferred.errback(error); } store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); return deferred; //Object }, function testWriteAPI_revert(){ // summary: // Simple test of the revert API // description: // Simple test of the revert API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var deferred = new doh.Deferred(); function onComplete(items, request) { doh.assertEqual(1, items.length); var item = items[0]; doh.assertTrue(store.containsValue(item, "name", "Egypt")); doh.assertTrue(store.isDirty(item) == false); doh.assertTrue(!store.isDirty()); store.setValue(item, "name", "Egypt 2"); doh.assertTrue(store.getValue(item, "name") == "Egypt 2"); doh.assertTrue(store.isDirty(item)); doh.assertTrue(store.isDirty()); store.revert(); //Fetch again to see if it reset the state. function onCompleteToo(itemsToo, requestToo){ doh.assertEqual(1, itemsToo.length); var itemToo = itemsToo[0]; doh.assertTrue(store.containsValue(itemToo, "name", "Egypt")); deferred.callback(true); } store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); } function onError(error, request){ deferred.errback(error); } store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); return deferred; //Object }, function testWriteAPI_save(){ // summary: // Simple test of the save API // description: // Simple test of the save API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var deferred = new doh.Deferred(); function onError(error){ deferred.errback(error); } function onItem(item){ store.setValue(item, "capital", "New Cairo"); function onComplete() { deferred.callback(true); } store.save({onComplete:onComplete, onError:onError}); } store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); return deferred; //Object }, function testWriteAPI_saveVerifyState(){ // summary: // Simple test of the save API // description: // Simple test of the save API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var deferred = new doh.Deferred(); function onError(error){ deferred.errback(error); } function onItem(item){ store.setValue(item, "capital", "New Cairo"); function onComplete() { //Check internal state. Note: Users should NOT do this, this is a UT verification //of internals in this case. Ref tracker: #4394 doh.assertTrue(!store._saveInProgress); deferred.callback(true); } store.save({onComplete:onComplete, onError:onError}); } store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); return deferred; //Object }, function testWriteAPI_saveEverything(){ // summary: // Simple test of the save API // description: // Simple test of the save API var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); var egypt; store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ var struct = dojo.fromJson(newFileContentString); doh.assertEqual(struct.identifier, store.getIdentityAttributes(egypt)[0]); doh.assertEqual(struct.label, store.getLabelAttributes(egypt)[0]); doh.assertEqual(struct.items.length, 7); var cloneStore = new dojo.data.ItemFileWriteStore({data:struct}); function onItemClone(itemClone){ var egyptClone = itemClone; doh.assertEqual(store.getIdentityAttributes(egypt)[0], cloneStore.getIdentityAttributes(egyptClone)[0]); doh.assertEqual(store.getLabelAttributes(egypt)[0], cloneStore.getLabelAttributes(egyptClone)[0]); doh.assertEqual(store.getValue(egypt, "name"), cloneStore.getValue(egyptClone, "name")); } cloneStore.fetchItemByIdentity({identity:"eg", onItem:onItemClone, onError:onError}); saveCompleteCallback(); }; var deferred = new doh.Deferred(); function onError(error){ deferred.errback(error); } function onItem(item){ egypt = item; function onComplete() { deferred.callback(true); } store.setValue(egypt, "capital", "New Cairo"); store.save({onComplete:onComplete, onError:onError}); } store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); return deferred; //Object }, function testWriteAPI_saveEverything_withDateType(){ // summary: // Simple test of the save API with a non-atomic type (Date) that has a type mapping. // description: // Simple test of the save API with a non-atomic type (Date) that has a type mapping. var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ //Now load the new data into a datastore and validate that it stored the date right. var dataset = dojo.fromJson(newFileContentString); var newStore = new dojo.data.ItemFileWriteStore({data: dataset}); function gotItem(item){ var independenceDate = newStore.getValue(item,"independence"); doh.assertTrue(independenceDate instanceof Date); doh.assertTrue(dojo.date.compare(new Date(1993,04,24), independenceDate, "date") === 0); saveCompleteCallback(); } function failed(error, request){ deferred.errback(error); saveFailedCallback(); } newStore.fetchItemByIdentity({identity:"eg", onItem:gotItem, onError:failed}); }; var deferred = new doh.Deferred(); function onError(error){ deferred.errback(error); } function onItem(item){ function onComplete() { deferred.callback(true); } store.setValue(item, "independence", new Date(1993,04,24)); store.save({onComplete:onComplete, onError:onError}); } store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); return deferred; //Object }, function testWriteAPI_saveEverything_withCustomColorTypeSimple(){ // summary: // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. // description: // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. //Set up the store basics: What data it has, and what to do when save is called for saveEverything //And how to map the 'Color' type in and out of the format. //(Test of saving all to a some location...) var dataset = { identifier:'name', items: [ { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } ] }; var customTypeMap = {'Color': dojo.Color }; var store = new dojo.data.ItemFileWriteStore({ data:dataset, typeMap: customTypeMap }); store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ //Now load the new data into a datastore and validate that it stored the Color right. var dataset = dojo.fromJson(newFileContentString); var newStore = new dojo.data.ItemFileWriteStore({data: dataset, typeMap: customTypeMap}); function gotItem(item){ var hairColor = newStore.getValue(item,"hairColor"); doh.assertTrue(hairColor instanceof dojo.Color); doh.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); saveCompleteCallback(); } function failed(error, request){ deferred.errback(error); saveFailedCallback(); } newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); }; //Add a new item with a color type, then save it. var deferred = new doh.Deferred(); function onError(error){ deferred.errback(error); } function onComplete() { deferred.callback(true); } var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); store.save({onComplete:onComplete, onError:onError}); return deferred; //Object }, function testWriteAPI_saveEverything_withCustomColorTypeGeneral(){ // summary: // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. // description: // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. //Set up the store basics: What data it has, and what to do when save is called for saveEverything //And how to map the 'Color' type in and out of the format. //(Test of saving all to a some location...) var dataset = { identifier:'name', items: [ { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } ] }; var customTypeMap = {'Color': { type: dojo.Color, deserialize: function(value){ return new dojo.Color(value); }, serialize: function(obj){ return obj.toString(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -