Ticket #6073: dojo.data.ItemFileStore_20080501.patch
| File dojo.data.ItemFileStore_20080501.patch, 23.9 kB (added by jaredj, 8 months ago) |
|---|
-
tests/data/readOnlyItemFileTestTemplates.js
2193 2193 } 2194 2194 }, 2195 2195 { 2196 name: "Read API: close (clearOnClose: true)", 2197 runTest: function(datastore, t){ 2198 // summary: 2199 // Function to test the close api properly clears the store for reload when clearOnClose is set. 2200 if (dojo.isBrowser) { 2201 var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); 2202 params.clearOnClose = true; 2203 params.urlPreventCache = true; 2204 var store = new datastore(params); 2205 2206 var d = new doh.Deferred(); 2207 function onItem(item){ 2208 var error = null; 2209 try { 2210 t.assertTrue(item !== null); 2211 var ec = item; 2212 var val = store.getValue(ec, "name"); 2213 t.assertEqual("Ecuador", val); 2214 2215 store.close(); 2216 //Check some internals here. Do not normally access these! 2217 t.assertTrue(store._arrayOfAllItems.length === 0); 2218 t.assertTrue(store._loadFinished === false); 2219 }catch (e){ 2220 error = e; 2221 } 2222 if (error) { 2223 d.errback(error); 2224 }else{ 2225 d.callback(true); 2226 } 2227 } 2228 function onError(errData){ 2229 d.errback(errData); 2230 } 2231 store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); 2232 return d; // Deferred 2233 } 2234 } 2235 }, 2236 { 2237 name: "Read API: close (clearOnClose: false)", 2238 runTest: function(datastore, t){ 2239 // summary: 2240 // Function to test the close api properly clears the store for reload when clearOnClose is set. 2241 if (dojo.isBrowser) { 2242 var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); 2243 params.urlPreventCache = true; 2244 var store = new datastore(params); 2245 2246 var d = new doh.Deferred(); 2247 function onItem(item){ 2248 var error = null; 2249 try { 2250 t.assertTrue(item !== null); 2251 var ec = item; 2252 var val = store.getValue(ec, "name"); 2253 t.assertEqual("Ecuador", val); 2254 2255 store.close(); 2256 //Check some internals here. Do not normally access these! 2257 t.assertTrue(store._arrayOfAllItems.length !== 0); 2258 t.assertTrue(store._loadFinished === true); 2259 }catch (e){ 2260 error = e; 2261 } 2262 if (error) { 2263 d.errback(error); 2264 }else{ 2265 d.callback(true); 2266 } 2267 } 2268 function onError(errData){ 2269 d.errback(errData); 2270 } 2271 store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); 2272 return d; // Deferred 2273 } 2274 } 2275 }, 2276 { 2196 2277 name: "Identity API: no_identifier_specified", 2197 2278 runTest: function(datastore, t){ 2198 2279 var arrayOfItems = [ -
tests/data/ItemFileWriteStore.js
40 40 {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} 41 41 ] 42 42 } 43 } 43 }; 44 44 } 45 45 } 46 46 return data; … … 60 60 var features = store.getFeatures(); 61 61 62 62 // make sure we have the expected features: 63 doh.assertTrue(features["dojo.data.api.Read"] != null);64 doh.assertTrue(features["dojo.data.api.Identity"] != null);65 doh.assertTrue(features["dojo.data.api.Write"] != null);66 doh.assertTrue(features["dojo.data.api.Notification"] != null);63 doh.assertTrue(features["dojo.data.api.Read"] !== null); 64 doh.assertTrue(features["dojo.data.api.Identity"] !== null); 65 doh.assertTrue(features["dojo.data.api.Write"] !== null); 66 doh.assertTrue(features["dojo.data.api.Notification"] !== null); 67 67 doh.assertFalse(features["iggy"]); 68 68 69 69 // and only the expected features: … … 85 85 var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); 86 86 87 87 var deferred = new doh.Deferred(); 88 function onComplete(items, request){88 var onComplete = function(items, request){ 89 89 doh.assertEqual(1, items.length); 90 90 var item = items[0]; 91 91 doh.assertTrue(store.containsValue(item, "capital", "Cairo")); … … 94 94 // Okay, so this seems very odd. Maybe I'm just being dense. 95 95 // These tests works: 96 96 doh.assertEqual(store.isDirty(item), false); 97 doh.assertTrue(store.isDirty(item) == false);97 doh.assertTrue(store.isDirty(item) === false); 98 98 // But these seemingly equivalent tests will not work: 99 99 // doh.assertFalse(store.isDirty(item)); 100 100 // doh.assertTrue(!(store.isDirty(item))); … … 102 102 // All of which seems especially weird, given that this *does* work: 103 103 doh.assertFalse(store.isDirty()); 104 104 105 106 doh.assertTrue(store.isDirty(item) == false); 105 doh.assertTrue(store.isDirty(item) === false); 107 106 doh.assertTrue(!store.isDirty()); 108 107 store.setValue(item, "capital", "New Cairo"); 109 108 doh.assertTrue(store.isDirty(item)); 110 109 doh.assertTrue(store.isDirty()); 111 110 doh.assertEqual(store.getValue(item, "capital").toString(), "New Cairo"); 112 111 deferred.callback(true); 113 } 114 function onError(error, request){112 }; 113 var onError = function(error, request){ 115 114 deferred.errback(error); 116 } 115 }; 117 116 store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); 118 117 return deferred; //Object 119 118 }, … … 129 128 doh.assertEqual(1, items.length); 130 129 var item = items[0]; 131 130 doh.assertTrue(store.containsValue(item, "name", "Egypt")); 132 doh.assertTrue(store.isDirty(item) == false);131 doh.assertTrue(store.isDirty(item) === false); 133 132 doh.assertTrue(!store.isDirty()); 134 133 store.setValues(item, "name", ["Egypt 1", "Egypt 2"]); 135 134 doh.assertTrue(store.isDirty(item)); … … 157 156 doh.assertEqual(1, items.length); 158 157 var item = items[0]; 159 158 doh.assertTrue(store.containsValue(item, "name", "Egypt")); 160 doh.assertTrue(store.isDirty(item) == false);159 doh.assertTrue(store.isDirty(item) === false); 161 160 doh.assertTrue(!store.isDirty()); 162 161 store.unsetAttribute(item, "name"); 163 162 doh.assertTrue(store.isDirty(item)); … … 216 215 217 216 var deferred = new doh.Deferred(); 218 217 doh.assertTrue(!store.isDirty()); 219 function onComplete(items, request){ 218 219 var onError = function(error, request){ 220 deferred.errback(error); 221 }; 222 223 var onComplete = function(items, request){ 220 224 doh.assertEqual(1, items.length); 221 225 var item = items[0]; 222 226 doh.assertTrue(store.containsValue(item, "name", "Egypt")); … … 236 240 doh.assertTrue(false); 237 241 }; 238 242 243 244 239 245 //See if we can add in a new item representing the city of Cairo. 240 246 //This should also call the onNew set above.... 241 247 var newItem = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); … … 254 260 } 255 261 //Do a shallow search first, should find nothing. 256 262 store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemShallow, onError: onError}); 257 } 258 function onError(error, request){ 259 deferred.errback(error); 260 } 263 }; 261 264 store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); 262 265 return deferred; //Object 263 266 }, … … 335 338 var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); 336 339 337 340 var deferred = new doh.Deferred(); 338 function onComplete(items, request){ 341 342 var onError = function(error, request){ 343 deferred.errback(error); 344 }; 345 346 var onComplete = function(items, request){ 339 347 doh.assertEqual(1, items.length); 340 348 var item = items[0]; 341 349 doh.assertTrue(store.containsValue(item, "name", "Egypt")); 342 doh.assertTrue(store.isDirty(item) == false);350 doh.assertTrue(store.isDirty(item) === false); 343 351 doh.assertTrue(!store.isDirty()); 344 352 store.deleteItem(item); 345 353 doh.assertTrue(store.isDirty(item)); 346 354 doh.assertTrue(store.isDirty()); 347 function onCompleteToo(itemsToo, requestToo) {355 var onCompleteToo = function(itemsToo, requestToo) { 348 356 doh.assertEqual(0, itemsToo.length); 349 357 deferred.callback(true); 350 } 358 }; 351 359 store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); 352 } 353 function onError(error, request){ 354 deferred.errback(error); 355 } 360 }; 356 361 store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); 357 362 return deferred; //Object 358 363 }, … … 387 392 var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); 388 393 389 394 var deferred = new doh.Deferred(); 390 function onComplete(items, request) { 395 396 var onError = function(error, request){ 397 deferred.errback(error); 398 }; 399 400 var onComplete = function(items, request) { 391 401 doh.assertEqual(1, items.length); 392 402 var item = items[0]; 393 403 doh.assertTrue(store.containsValue(item, "name", "Egypt")); 394 doh.assertTrue(store.isDirty(item) == false);404 doh.assertTrue(store.isDirty(item) === false); 395 405 doh.assertTrue(!store.isDirty()); 396 406 store.setValue(item, "name", "Egypt 2"); 397 407 doh.assertTrue(store.getValue(item, "name") == "Egypt 2"); … … 400 410 store.revert(); 401 411 402 412 //Fetch again to see if it reset the state. 403 function onCompleteToo(itemsToo, requestToo){413 var onCompleteToo = function(itemsToo, requestToo){ 404 414 doh.assertEqual(1, itemsToo.length); 405 415 var itemToo = itemsToo[0]; 406 416 doh.assertTrue(store.containsValue(itemToo, "name", "Egypt")); 407 417 deferred.callback(true); 408 } 418 }; 409 419 store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); 410 } 411 function onError(error, request){ 412 deferred.errback(error); 413 } 420 }; 414 421 store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); 415 422 return deferred; //Object 416 423 }, … … 466 473 // Simple test of the save API 467 474 var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); 468 475 var egypt; 476 477 var deferred = new doh.Deferred(); 478 var onError = function(error){ 479 deferred.errback(error); 480 }; 481 469 482 store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ 470 483 var struct = dojo.fromJson(newFileContentString); 471 484 doh.assertEqual(struct.identifier, store.getIdentityAttributes(egypt)[0]); … … 473 486 doh.assertEqual(struct.items.length, 7); 474 487 475 488 var cloneStore = new dojo.data.ItemFileWriteStore({data:struct}); 476 function onItemClone(itemClone){489 var onItemClone = function(itemClone){ 477 490 var egyptClone = itemClone; 478 491 doh.assertEqual(store.getIdentityAttributes(egypt)[0], cloneStore.getIdentityAttributes(egyptClone)[0]); 479 492 doh.assertEqual(store.getLabelAttributes(egypt)[0], cloneStore.getLabelAttributes(egyptClone)[0]); 480 493 doh.assertEqual(store.getValue(egypt, "name"), cloneStore.getValue(egyptClone, "name")); 481 } 494 }; 482 495 cloneStore.fetchItemByIdentity({identity:"eg", onItem:onItemClone, onError:onError}); 483 484 496 saveCompleteCallback(); 485 497 }; 486 487 var deferred = new doh.Deferred(); 488 function onError(error){ 489 deferred.errback(error); 490 } 491 function onItem(item){ 498 var onItem = function(item){ 492 499 egypt = item; 493 function onComplete() {500 var onComplete = function() { 494 501 deferred.callback(true); 495 } 502 }; 496 503 store.setValue(egypt, "capital", "New Cairo"); 497 504 store.save({onComplete:onComplete, onError:onError}); 498 } 505 }; 499 506 store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); 500 507 return deferred; //Object 501 508 }, … … 505 512 // description: 506 513 // Simple test of the save API with a non-atomic type (Date) that has a type mapping. 507 514 var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); 515 516 var deferred = new doh.Deferred(); 508 517 store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ 509 518 510 519 //Now load the new data into a datastore and validate that it stored the date right. … … 514 523 function gotItem(item){ 515 524 var independenceDate = newStore.getValue(item,"independence"); 516 525 doh.assertTrue(independenceDate instanceof Date); 517 doh.assertTrue(dojo.date.compare(new Date(1993, 04,24), independenceDate, "date") === 0);526 doh.assertTrue(dojo.date.compare(new Date(1993,4,24), independenceDate, "date") === 0); 518 527 saveCompleteCallback(); 519 528 } 520 529 function failed(error, request){ … … 524 533 newStore.fetchItemByIdentity({identity:"eg", onItem:gotItem, onError:failed}); 525 534 }; 526 535 527 var deferred = new doh.Deferred(); 528 function onError(error){ 536 var onError = function(error){ 529 537 deferred.errback(error); 530 } 531 function onItem(item){532 function onComplete() {538 }; 539 var onItem = function(item){ 540 var onComplete = function() { 533 541 deferred.callback(true); 534 } 535 store.setValue(item, "independence", new Date(1993, 04,24));542 }; 543 store.setValue(item, "independence", new Date(1993,4,24)); 536 544 store.save({onComplete:onComplete, onError:onError}); 537 } 545 }; 538 546 store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); 539 547 return deferred; //Object 540 548 }, … … 562 570 typeMap: customTypeMap 563 571 }); 564 572 573 var deferred = new doh.Deferred(); 565 574 store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ 566 575 //Now load the new data into a datastore and validate that it stored the Color right. 567 576 var dataset = dojo.fromJson(newFileContentString); 568 577 var newStore = new dojo.data.ItemFileWriteStore({data: dataset, typeMap: customTypeMap}); 569 578 579 var deferred = new doh.Deferred(); 570 580 function gotItem(item){ 571 581 var hairColor = newStore.getValue(item,"hairColor"); 572 582 doh.assertTrue(hairColor instanceof dojo.Color); … … 581 591 }; 582 592 583 593 //Add a new item with a color type, then save it. 584 var deferred = new doh.Deferred(); 585 function onError(error){ 594 var onError = function(error){ 586 595 deferred.errback(error); 587 } 588 function onComplete() {596 }; 597 var onComplete = function() { 589 598 deferred.callback(true); 590 } 599 }; 591 600 592 601 var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); 593 602 store.save({onComplete:onComplete, onError:onError}); … … 619 628 return obj.toString(); 620 629 } 621 630 } 622 } 631 }; 623 632 var store = new dojo.data.ItemFileWriteStore({ 624 633 data:dataset, 625 634 typeMap: customTypeMap 626 635 }); 636 637 var deferred = new doh.Deferred(); 627 638 store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ 628 639 //Now load the new data into a datastore and validate that it stored the Color right. 629 640 var dataset = dojo.fromJson(newFileContentString); 630 641 var newStore = new dojo.data.ItemFileWriteStore({data: dataset, typeMap: customTypeMap}); 631 642 632 function gotItem(item){643 var gotItem = function(item){ 633 644 var hairColor = newStore.getValue(item,"hairColor"); 634 645 doh.assertTrue(hairColor instanceof dojo.Color); 635 646 doh.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); 636 647 saveCompleteCallback(); 637 } 638 function failed(error, request){648 }; 649 var failed = function(error, request){ 639 650 deferred.errback(error); 640 651 saveFailedCallback(); 641 } 652 }; 642 653 newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); 643 654 }; 644 655 645 656 //Add a new item with a color type, then save it. 646 var deferred = new doh.Deferred(); 647 function onError(error){ 657 var onError = function(error){ 648 658 deferred.errback(error); 649 } 650 function onComplete() {659 }; 660 var onComplete = function() { 651 661 deferred.callback(true); 652 } 662 }; 653 663 654 664 var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); 655 665 store.save({onComplete:onComplete, onError:onError}); … … 742 752 var egypt = fetchedItem; 743 753 var connectHandle = null; 744 754 function deleteItemHandler(item){ 745 doh.assertTrue(store.isItem(item) == false);755 doh.assertTrue(store.isItem(item) === false); 746 756 doh.assertTrue(item == egypt); 747 757 deferred.callback(true); 748 758 dojo.disconnect(connectHandle); … … 840 850 841 851 var onError = function(error, request){ 842 852 deferred.errback(error); 843 } 853 }; 844 854 var onComplete = function(items, request){ 845 855 doh.assertEqual(7, items.length); 846 856 … … 864 874