diff options
Diffstat (limited to 'includes/js/dojo/tests/data')
17 files changed, 0 insertions, 4121 deletions
diff --git a/includes/js/dojo/tests/data/ItemFileReadStore.js b/includes/js/dojo/tests/data/ItemFileReadStore.js deleted file mode 100644 index 19d37da..0000000 --- a/includes/js/dojo/tests/data/ItemFileReadStore.js +++ /dev/null @@ -1,10 +0,0 @@ -if(!dojo._hasResource["tests.data.ItemFileReadStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["tests.data.ItemFileReadStore"] = true; -dojo.provide("tests.data.ItemFileReadStore"); -dojo.require("tests.data.readOnlyItemFileTestTemplates"); -dojo.require("dojo.data.ItemFileReadStore"); - -tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore("dojo.data.ItemFileReadStore"); - - -} diff --git a/includes/js/dojo/tests/data/ItemFileWriteStore.js b/includes/js/dojo/tests/data/ItemFileWriteStore.js deleted file mode 100644 index 9dd938e..0000000 --- a/includes/js/dojo/tests/data/ItemFileWriteStore.js +++ /dev/null @@ -1,1402 +0,0 @@ -if(!dojo._hasResource["tests.data.ItemFileWriteStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["tests.data.ItemFileWriteStore"] = true; -dojo.provide("tests.data.ItemFileWriteStore"); -dojo.require("tests.data.readOnlyItemFileTestTemplates"); - -dojo.require("dojo.data.ItemFileWriteStore"); -dojo.require("dojo.data.api.Read"); -dojo.require("dojo.data.api.Identity"); -dojo.require("dojo.data.api.Write"); -dojo.require("dojo.data.api.Notification"); - - -// First, make sure ItemFileWriteStore can still pass all the same unit tests -// that we use for its superclass, ItemFileReadStore: -tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore("dojo.data.ItemFileWriteStore"); - -tests.data.ItemFileWriteStore.getTestData = function(name){ - var data = {}; - if(name === "reference_integrity"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/reference_integrity.json").toString() }; - }else{ - data = - { data: { - "identifier": "id", - "label": "name", - "items": [ - {"id": 1, "name": "Item 1"}, - {"id": 2, "name": "Item 2"}, - {"id": 3, "name": "Item 3"}, - {"id": 4, "name": "Item 4"}, - {"id": 5, "name": "Item 5"}, - {"id": 6, "name": "Item 6"}, - {"id": 7, "name": "Item 7"}, - {"id": 8, "name": "Item 8"}, - {"id": 9, "name": "Item 9"}, - {"id": 10, "name": "Item 10", "friends": [{"_reference": 1},{"_reference": 3},{"_reference": 5}]}, - {"id": 11, "name": "Item 11", "friends": [{"_reference": 10}], "siblings": [{"_reference": 10}]}, - {"id": 12, "name": "Item 12", "friends": [{"_reference": 3},{"_reference": 7}], "enemies": [{"_reference": 10}]}, - {"id": 13, "name": "Item 13", "friends": [{"_reference": 10}]}, - {"id": 14, "name": "Item 14", "friends": [{"_reference": 11}]}, - {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} - ] - } - } - } - } - return data; -}; - - -// Now run some tests that are specific to the write-access features: -doh.register("tests.data.ItemFileWriteStore", - [ - function test_getFeatures(){ - // summary: - // Simple test of the getFeatures function of the store - // description: - // Simple test of the getFeatures function of the store - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var features = store.getFeatures(); - - // make sure we have the expected features: - doh.assertTrue(features["dojo.data.api.Read"] != null); - doh.assertTrue(features["dojo.data.api.Identity"] != null); - doh.assertTrue(features["dojo.data.api.Write"] != null); - doh.assertTrue(features["dojo.data.api.Notification"] != null); - doh.assertFalse(features["iggy"]); - - // and only the expected features: - var count = 0; - for(var i in features){ - doh.assertTrue((i === "dojo.data.api.Read" || - i === "dojo.data.api.Identity" || - i === "dojo.data.api.Write" || - i === "dojo.data.api.Notification")); - count++; - } - doh.assertEqual(count, 4); - }, - function testWriteAPI_setValue(){ - // summary: - // Simple test of the setValue API - // description: - // Simple test of the setValue 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, "capital", "Cairo")); - - // FIXME: - // Okay, so this seems very odd. Maybe I'm just being dense. - // These tests works: - doh.assertEqual(store.isDirty(item), false); - doh.assertTrue(store.isDirty(item) == false); - // But these seemingly equivalent tests will not work: - // doh.assertFalse(store.isDirty(item)); - // doh.assertTrue(!(store.isDirty(item))); - // - // All of which seems especially weird, given that this *does* work: - doh.assertFalse(store.isDirty()); - - - doh.assertTrue(store.isDirty(item) == false); - doh.assertTrue(!store.isDirty()); - store.setValue(item, "capital", "New Cairo"); - doh.assertTrue(store.isDirty(item)); - doh.assertTrue(store.isDirty()); - doh.assertEqual(store.getValue(item, "capital").toString(), "New Cairo"); - deferred.callback(true); - } - function onError(error, request){ - deferred.errback(error); - } - store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); - return deferred; //Object - }, - function testWriteAPI_setValues(){ - // summary: - // Simple test of the setValues API - // description: - // Simple test of the setValues 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.setValues(item, "name", ["Egypt 1", "Egypt 2"]); - doh.assertTrue(store.isDirty(item)); - doh.assertTrue(store.isDirty()); - var values = store.getValues(item, "name"); - doh.assertTrue(values[0] == "Egypt 1"); - doh.assertTrue(values[1] == "Egypt 2"); - deferred.callback(true); - } - function onError(error, request){ - deferred.errback(error); - } - store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); - return deferred; //Object - }, - function testWriteAPI_unsetAttribute(){ - // summary: - // Simple test of the unsetAttribute API - // description: - // Simple test of the unsetAttribute 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.unsetAttribute(item, "name"); - doh.assertTrue(store.isDirty(item)); - doh.assertTrue(store.isDirty()); - doh.assertTrue(!store.hasAttribute(item, "name")); - deferred.callback(true); - } - function onError(error, request) { - deferred.errback(error); - } - store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); - return deferred; //Object - }, - function testWriteAPI_newItem(){ - // summary: - // Simple test of the newItem API - // description: - // Simple test of the newItem API - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var deferred = new doh.Deferred(); - doh.assertTrue(!store.isDirty()); - - var onNewInvoked = false; - store.onNew = function(newItem, parentInfo){ - - doh.assertTrue(newItem !== null); - doh.assertTrue(parentInfo === null); - doh.assertTrue(store.isItem(newItem)); - onNewInvoked = true; - }; - var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); - doh.assertTrue(onNewInvoked); - - doh.assertTrue(store.isDirty(canada)); - doh.assertTrue(store.isDirty()); - doh.assertTrue(store.getValues(canada, "name") == "Canada"); - function onComplete(items, request){ - doh.assertEqual(1, items.length); - var item = items[0]; - doh.assertTrue(store.containsValue(item, "name", "Canada")); - deferred.callback(true); - } - function onError(error, request){ - deferred.errback(error); - } - store.fetch({query:{name:"Canada"}, onComplete: onComplete, onError: onError}); - return deferred; //Object - }, - function testWriteAPI_newItem_withParent(){ - // summary: - // Simple test of the newItem API with a parent assignment - // description: - // Simple test of the newItem API with a parent assignment - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var deferred = new doh.Deferred(); - doh.assertTrue(!store.isDirty()); - function onComplete(items, request){ - doh.assertEqual(1, items.length); - var item = items[0]; - doh.assertTrue(store.containsValue(item, "name", "Egypt")); - - //Attach an onNew to validate we get expected values. - var onNewInvoked = false; - store.onNew = function(newItem, parentInfo){ - doh.assertEqual(item, parentInfo.item); - doh.assertEqual("cities", parentInfo.attribute); - doh.assertTrue(parentInfo.oldValue === undefined); - doh.assertTrue(parentInfo.newValue === newItem); - onNewInvoked = true; - }; - - //Attach an onSet and verify onSet is NOT called in this case. - store.onSet = function(item, attribute, oldValue, newValue){ - doh.assertTrue(false); - }; - - //See if we can add in a new item representing the city of Cairo. - //This should also call the onNew set above.... - var newItem = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); - doh.assertTrue(onNewInvoked); - - function onCompleteNewItemShallow(items, request){ - doh.assertEqual(0, items.length); - function onCompleteNewItemDeep(items, request){ - doh.assertEqual(1, items.length); - var item = items[0]; - doh.assertEqual("Cairo", store.getValue(item, "name")); - deferred.callback(true); - } - //Do a deep search now, should find the new item of the city with name attribute Cairo. - store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemDeep, onError: onError, queryOptions: {deep:true}}); - } - //Do a shallow search first, should find nothing. - store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemShallow, onError: onError}); - } - function onError(error, request){ - deferred.errback(error); - } - store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); - return deferred; //Object - }, - - function testWriteAPI_newItem_multiple_withParent(){ - // summary: - // Simple test of the newItem API with a parent assignment multiple times. - // description: - // Simple test of the newItem API with a parent assignment multiple times. - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var deferred = new doh.Deferred(); - - doh.assertTrue(!store.isDirty()); - - function onComplete(items, request){ - doh.assertEqual(1, items.length); - var item = items[0]; - doh.assertTrue(store.containsValue(item, "name", "Egypt")); - - //Attach an onNew to validate we get expected values. - store.onNew = function(newItem, parentInfo){ - doh.assertEqual(item, parentInfo.item); - doh.assertEqual("cities", parentInfo.attribute); - - doh.assertTrue(parentInfo.oldValue === undefined); - - doh.assertTrue(parentInfo.newValue === newItem); - }; - - //See if we can add in a new item representing the city of Cairo. - //This should also call the onNew set above.... - var newItem1 = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); - - //Attach a new onNew to validate we get expected values. - store.onNew = function(newItem, parentInfo){ - doh.assertEqual(item, parentInfo.item); - doh.assertEqual("cities", parentInfo.attribute); - - console.log(parentInfo.oldValue); - doh.assertTrue(parentInfo.oldValue == newItem1); - - doh.assertTrue(parentInfo.newValue[0] == newItem1); - doh.assertTrue(parentInfo.newValue[1] == newItem); - }; - var newItem2 = store.newItem({name: "Banha", abbr: "Banha"}, {parent: item, attribute: "cities"}); - - //Attach a new onNew to validate we get expected values. - store.onNew = function(newItem, parentInfo){ - doh.assertEqual(item, parentInfo.item); - doh.assertEqual("cities", parentInfo.attribute); - - doh.assertTrue(parentInfo.oldValue[0] == newItem1); - doh.assertTrue(parentInfo.oldValue[1] == newItem2); - - doh.assertTrue(parentInfo.newValue[0] == newItem1); - doh.assertTrue(parentInfo.newValue[1] == newItem2); - doh.assertTrue(parentInfo.newValue[2] == newItem); - }; - var newItem3 = store.newItem({name: "Damanhur", abbr: "Damanhur"}, {parent: item, attribute: "cities"}); - deferred.callback(true); - } - function onError(error, request){ - deferred.errback(error); - } - store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); - 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(); - } - } - } - 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_newItem_revert(){ - // summary: - // Test for bug #5357. Ensure that the revert properly nulls the identity position - // for a new item after revert. - var args = {data: { - label:"name", - items:[ - {name:'Ecuador', capital:'Quito'}, - {name:'Egypt', capital:'Cairo'}, - {name:'El Salvador', capital:'San Salvador'}, - {name:'Equatorial Guinea', capital:'Malabo'}, - {name:'Eritrea', capital:'Asmara'}, - {name:'Estonia', capital:'Tallinn'}, - {name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - var store = new dojo.data.ItemFileWriteStore(args); - - var newCountry = store.newItem({name: "Utopia", capitol: "Perfect"}); - - //DO NOT ACCESS THIS WAY. THESE ARE INTERNAL VARIABLES. DOING THIS FOR TEST PURPOSES. - var itemEntryNum = newCountry[store._itemNumPropName]; - doh.assertTrue(store._arrayOfAllItems[itemEntryNum] === newCountry); - store.revert(); - doh.assertTrue(store._arrayOfAllItems[itemEntryNum] === null); - }, - function testNotificationAPI_onSet(){ - // summary: - // Simple test of the onSet API - // description: - // Simple test of the onSet 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(fetchedItem){ - var egypt = fetchedItem; - var connectHandle = null; - function setValueHandler(item, attribute, oldValue, newValue){ - doh.assertTrue(store.isItem(item)); - doh.assertTrue(item == egypt); - doh.assertTrue(attribute == "capital"); - doh.assertTrue(oldValue == "Cairo"); - doh.assertTrue(newValue == "New Cairo"); - deferred.callback(true); - dojo.disconnect(connectHandle); - } - connectHandle = dojo.connect(store, "onSet", setValueHandler); - store.setValue(egypt, "capital", "New Cairo"); - } - store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); - }, - function testNotificationAPI_onNew(){ - // summary: - // Simple test of the onNew API - // description: - // Simple test of the onNew API - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var deferred = new doh.Deferred(); - var connectHandle = null; - function newItemHandler(item){ - doh.assertTrue(store.isItem(item)); - doh.assertTrue(store.getValue(item, "name") == "Canada"); - deferred.callback(true); - dojo.disconnect(connectHandle); - } - connectHandle = dojo.connect(store, "onNew", newItemHandler); - var canada = store.newItem({name:"Canada", abbr:"ca", capital:"Ottawa"}); - }, - function testNotificationAPI_onDelete(){ - // summary: - // Simple test of the onDelete API - // description: - // Simple test of the onDelete 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(fetchedItem){ - var egypt = fetchedItem; - var connectHandle = null; - function deleteItemHandler(item){ - doh.assertTrue(store.isItem(item) == false); - doh.assertTrue(item == egypt); - deferred.callback(true); - dojo.disconnect(connectHandle); - } - connectHandle = dojo.connect(store, "onDelete", deleteItemHandler); - store.deleteItem(egypt); - } - store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); - }, - function testReadAPI_functionConformanceToo(){ - // 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 testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - var readApi = new dojo.data.api.Read(); - var passed = true; - - for(var functionName in readApi){ - var member = readApi[functionName]; - //Check that all the 'Read' defined functions exist on the test store. - if(typeof member === "function"){ - var testStoreMember = testStore[functionName]; - if(!(typeof testStoreMember === "function")){ - passed = false; - break; - } - } - } - doh.assertTrue(passed); - }, - function testWriteAPI_functionConformance(){ - // summary: - // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. - // description: - // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. - var testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - var writeApi = new dojo.data.api.Write(); - var passed = true; - - for(var functionName in writeApi){ - var member = writeApi[functionName]; - //Check that all the 'Write' defined functions exist on the test store. - if(typeof member === "function"){ - var testStoreMember = testStore[functionName]; - if(!(typeof testStoreMember === "function")){ - passed = false; - break; - } - } - } - doh.assertTrue(passed); - }, - function testNotificationAPI_functionConformance(){ - // summary: - // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. - // description: - // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. - var testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - var api = new dojo.data.api.Notification(); - var passed = true; - - for(var functionName in api){ - var member = api[functionName]; - //Check that all the 'Write' defined functions exist on the test store. - if(typeof member === "function"){ - var testStoreMember = testStore[functionName]; - if(!(typeof testStoreMember === "function")){ - passed = false; - break; - } - } - } - doh.assertTrue(passed); - }, - function testIdentityAPI_noIdentifierSpecified(){ - // summary: - // Test for bug #3873. Given a datafile that does not specify an - // identifier, make sure ItemFileWriteStore auto-creates identities - // that are unique even after calls to deleteItem() and newItem() - var args = {data: { - label:"name", - items:[ - {name:'Ecuador', capital:'Quito'}, - {name:'Egypt', capital:'Cairo'}, - {name:'El Salvador', capital:'San Salvador'}, - {name:'Equatorial Guinea', capital:'Malabo'}, - {name:'Eritrea', capital:'Asmara'}, - {name:'Estonia', capital:'Tallinn'}, - {name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - var store = new dojo.data.ItemFileWriteStore(args); - var deferred = new doh.Deferred(); - - var onError = function(error, request){ - deferred.errback(error); - } - var onComplete = function(items, request){ - doh.assertEqual(7, items.length); - - var lastItem = items[(items.length - 1)]; - var idOfLastItem = store.getIdentity(lastItem); - store.deleteItem(lastItem); - store.newItem({name:'Canada', capital:'Ottawa'}); - - var onCompleteAgain = function(itemsAgain, requestAgain){ - doh.assertEqual(7, itemsAgain.length); - var identitiesInUse = {}; - for(var i = 0; i < itemsAgain.length; ++i){ - var item = itemsAgain[i]; - var id = store.getIdentity(item); - if(identitiesInUse.hasOwnProperty(id)){ - // there should not already be an entry for this id - doh.assertTrue(false); - }else{ - // we want to add the entry now - identitiesInUse[id] = item; - } - } - deferred.callback(true); - } - store.fetch({onComplete:onCompleteAgain, onError:onError}); - } - - store.fetch({onComplete:onComplete, onError:onError}); - return deferred; - }, - function testIdentityAPI_noIdentifierSpecified_revert(){ - // summary: - // Test for bug #4691 Given a datafile that does not specify an - // identifier, make sure ItemFileWriteStore auto-creates identities - // that are unique even after calls to deleteItem() and newItem() - var args = {data: { - label:"name", - items:[ - {name:'Ecuador', capital:'Quito'}, - {name:'Egypt', capital:'Cairo'}, - {name:'El Salvador', capital:'San Salvador'}, - {name:'Equatorial Guinea', capital:'Malabo'}, - {name:'Eritrea', capital:'Asmara'}, - {name:'Estonia', capital:'Tallinn'}, - {name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - var store = new dojo.data.ItemFileWriteStore(args); - var deferred = new doh.Deferred(); - - var onError = function(error, request){ - deferred.errback(error); - } - var onComplete = function(items, request){ - doh.assertEqual(7, items.length); - - var lastItem = items[(items.length - 1)]; - var idOfLastItem = store.getIdentity(lastItem); - store.deleteItem(lastItem); - store.newItem({name:'Canada', capital:'Ottawa'}); - - var onCompleteAgain = function(itemsAgain, requestAgain){ - doh.assertEqual(7, itemsAgain.length); - var identitiesInUse = {}; - for(var i = 0; i < itemsAgain.length; ++i){ - var item = itemsAgain[i]; - var id = store.getIdentity(item); - if(identitiesInUse.hasOwnProperty(id)){ - // there should not already be an entry for this id - doh.assertTrue(false); - }else{ - // we want to add the entry now - identitiesInUse[id] = item; - } - } - //Last test, revert everything and check item sizes. - store.revert(); - - //Now call fetch again and verify store state. - var revertComplete = function(itemsReverted, request){ - doh.assertEqual(7, itemsReverted.length); - deferred.callback(true); - } - store.fetch({onComplete:revertComplete, onError:onError}); - } - store.fetch({onComplete:onCompleteAgain, onError:onError}); - } - store.fetch({onComplete:onComplete, onError:onError}); - return deferred; - }, - function testReferenceIntegrity_checkReferences(){ - // summary: - // Simple test to verify the references were properly resolved. - // description: - // Simple test to verify the references were properly resolved. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - function onError(error, request){ - deferred.errback(error); - } - function onComplete(items, request){ - - var item10 = null; - var item1 = null; - var item3 = null; - var item5 = null; - - for (var i = 0; i < items.length; i++) { - var ident = store.getIdentity(items[i]); - if (ident === 10) { - item10 = items[i]; - }else if (ident === 1) { - item1 = items[i]; - }else if (ident === 3) { - item3 = items[i]; - }else if (ident === 5) { - item5 = items[i]; - } - } - var friends = store.getValues(item10, "friends"); - doh.assertTrue(friends !== null); - doh.assertTrue(friends !== undefined); - - doh.assertTrue(store.isItem(item10)); - doh.assertTrue(store.isItem(item1)); - doh.assertTrue(store.isItem(item3)); - doh.assertTrue(store.isItem(item5)); - var found = 0; - try{ - for (var i = 0; i < friends.length; i++) { - if (i === 0) { - doh.assertTrue(store.isItem(friends[i])); - doh.assertEqual(friends[i], item1); - doh.assertEqual(store.getIdentity(friends[i]), 1); - found++; - }else if (i === 1) { - doh.assertTrue(store.isItem(friends[i])); - doh.assertEqual(friends[i], item3); - doh.assertEqual(store.getIdentity(friends[i]), 3); - found++; - }else if (i === 2) { - doh.assertTrue(store.isItem(friends[i])); - doh.assertEqual(friends[i], item5); - doh.assertEqual(store.getIdentity(friends[i]), 5); - found++; - } - } - }catch(e){ - doh.errback(e); - } - doh.assertEqual(3, found); - deferred.callback(true); - } - store.fetch({onError: onError, onComplete: onComplete}); - return deferred; - }, - function testReferenceIntegrity_deleteReferencedItem(){ - // summary: - // Simple test to verify the references were properly deleted. - // description: - // Simple test to verify the references were properly deleted. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - } - function onItem(item, request){ - try{ - console.log("Before delete map state is: " + dojo.toJson(item[store._reverseRefMap])); - store.deleteItem(item); - console.log("After delete map state is: " + dojo.toJson(item[store._reverseRefMap])); - function verifyRefDelete(items, request){ - var passed = true; - for(var i = 0; i < items.length; i++){ - var curItem = items[i]; - var attributes = store.getAttributes(curItem); - for(var j = 0; j < attributes.length; j++){ - var values = store.getValues(curItem, attributes[j]); - var badRef = false; - for(var k = 0; k < values.length; k++){ - var value = values[k]; - try{ - var id = store.getIdentity(value); - if(id == 10){ - badRef = true; - break; - } - }catch(e){/*Not an item, even a dead one, just eat it.*/} - } - if(badRef){ - deferred.errback(new Error("Found a reference remaining to a deleted item. Failure.")); - passed = false; - break; - } - } - } - if(passed){ - deferred.callback(true); - } - } - store.fetch({onComplete: verifyRefDelete, onError: onError}); - }catch(error){ - deferred.errback(error); - } - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_deleteReferencedItemThenRevert(){ - // summary: - // Simple test to verify the references were properly deleted. - // description: - // Simple test to verify the references were properly deleted. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - } - function onItem(item, request){ - try{ - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - console.log("Map before delete:"); - store._dumpReferenceMap(); - var beforeDelete = dojo.toJson(item[store._reverseRefMap]); - store.deleteItem(item); - console.log("Map after delete:"); - store._dumpReferenceMap(); - var afterDelete = dojo.toJson(item[store._reverseRefMap]); - store.revert(); - console.log("Map after revert:"); - store._dumpReferenceMap(); - var afterRevert = dojo.toJson(item[store._reverseRefMap]); - doh.assertTrue(afterRevert === beforeDelete); - }catch(e){ - deferred.errback(e); - passed = false; - } - if(passed){ - deferred.callback(true); - } - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_deleteMultipleItemsWithReferencesAndRevert(){ - // summary: - // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. - // Created for tracker bug: #5743 - // description: - // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. - // Created for tracker bug: #5743 - - var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_references")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onItem(item, request){ - //Save off the located item, then locate another one (peer to Egypt) - doh.assertTrue(store.isItem(item)); - var egypt = item; - - function onItem2(item, request){ - doh.assertTrue(store.isItem(item)); - var nairobi = item; - - //Delete them - store.deleteItem(egypt); - store.deleteItem(nairobi); - try{ - //Revert, then do a fetch. If the internals have been damaged, this will generally - //cause onError to fire instead of onComplete. - store.revert(); - function onComplete(items, request){ - deferred.callback(true); - } - store.fetch({query: {name: "*"}, start: 0, count: 20, onComplete: onComplete, onError: onError}); - }catch(e){ - deferred.errback(e) - } - } - store.fetchItemByIdentity({identity: "Nairobi", onError: onError, onItem: onItem2}); - } - store.fetchItemByIdentity({identity: "Egypt", onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_removeReferenceFromAttribute(){ - // summary: - // Simple test to verify the reference removal updates the internal map. - // description: - // Simple test to verify the reference removal updates the internal map. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onItem(item, request){ - try{ - store.setValues(item, "friends", [null]); - - function onItem2(item10, request){ - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - var refMap = item10[store._reverseRefMap]; - store._dumpReferenceMap(); - - console.log("MAP for Item 10 is: " + dojo.toJson(refMap)); - - //Assert there is no reference to item 10 in item 11's attribute 'friends'. - doh.assertTrue(!refMap["11"]["friends"]); - store.setValues(item, "siblings", [0, 1, 2]); - //Assert there are no more references to 10 in 11. Ergo, "11" should be a 'undefined' attribute for the map of items referencing '10'.. - doh.assertTrue(!refMap["11"]); - deferred.callback(true); - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem2}); - - }catch(e){ - console.debug(e); - deferred.errback(e); - doh.assertTrue(false); - } - } - store.fetchItemByIdentity({identity: 11, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_deleteReferencedItemNonParent(){ - // summary: - // Simple test to verify the references to a non-parent item was properly deleted. - // description: - // Simple test to verify the references to a non-parent item was properly deleted. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - } - function onItem(item, request){ - try{ - console.log("Reference state for item 16 is: " + dojo.toJson(item[store._reverseRefMap])); - store.deleteItem(item); - function verifyRefDelete(items, request){ - var passed = true; - for(var i = 0; i < items.length; i++){ - var curItem = items[i]; - var attributes = store.getAttributes(curItem); - for(var j = 0; j < attributes.length; j++){ - var values = store.getValues(curItem, attributes[j]); - var badRef = false; - for(var k = 0; k < values.length; k++){ - var value = values[k]; - try{ - var id = store.getIdentity(value); - if(id == 16){ - badRef = true; - break; - } - }catch(e){/*Not an item, even a dead one, just eat it.*/} - } - if(badRef){ - deferred.errback(new Error("Found a reference remaining to a deleted item. Failure.")); - passed = false; - break; - } - } - } - if(passed){ - deferred.callback(true); - } - } - store.fetch({onComplete: verifyRefDelete, onError: onError}); - }catch(error){ - deferred.errback(error); - } - } - store.fetchItemByIdentity({identity: 16, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_addReferenceToAttribute(){ - // summary: - // Simple test to verify the reference additions can happen. - // description: - // Simple test to verify the reference additions can happen. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onComplete(items, request){ - - doh.assertTrue(items.length > 2); - - var item1 = items[0]; - var item2 = items[1]; - - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); - console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); - - store.setValue(item1, "siblings", item2); - - //Emit the current map state for inspection. - console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); - console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); - - doh.assertTrue(item2[store._reverseRefMap] != null); - - //Assert there is a recorded reference to item 2 in item 1's attribute 'sibling'. - doh.assertTrue(item2[store._reverseRefMap][store.getIdentity(item1)]["siblings"]); - - deferred.callback(true); - } - store.fetch({onError: onError, onComplete: onComplete}); - return deferred; - }, - function testReferenceIntegrity_newItemWithParentReference(){ - // summary: - // Simple test to verify that newItems with a parent properly record the parent's reference in the map. - // description: - // Simple test to verify that newItems with a parent properly record the parent's reference in the map. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onItem(item, request){ - try{ - //Create a new item and set its parent to item 10's uncle attribute. - var newItem = store.newItem({id: 17, name: "Item 17"}, {parent: item, attribute: "uncles"}); - - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - //Look up the references to 17, as item 10 has one now on attribute 'uncles' - var refs = newItem[store._reverseRefMap]; - - //Assert there is a reference from 10 to item 17, on attribute uncle - doh.assertTrue(refs["10"]["uncles"]); - - console.log("State of map of item 17 after newItem: " + dojo.toJson(refs)); - }catch(e){ - console.debug(e); - deferred.errback(e); - doh.assertTrue(false); - passed = false; - } - if(passed){ - deferred.callback(true); - } - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_newItemWithReferenceToExistingItem(){ - // summary: - // Simple test to verify that a new item with references to existing items properly record the references in the map. - // description: - // Simple test to verify that a new item with references to existing items properly record the references in the map. - - var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); - - var deferred = new doh.Deferred(); - var passed = true; - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onItem(item, request){ - try{ - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - console.log("State of reference map to item 10 before newItem: " + dojo.toJson(item[store._reverseRefMap])); - - //Create a new item and set its parent to item 10's uncle attribute. - var newItem = store.newItem({id: 17, name: "Item 17", friends: [item]}); - - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - //Look up the references to 10, as item 17 has one on friends now. - var refs = item[store._reverseRefMap]; - - //Assert there is a reference from 15 to item 10, on attribute friends - doh.assertTrue(refs["17"]["friends"]); - - console.log("State of reference map to item 10 after newItem: " + dojo.toJson(refs)); - }catch(e){ - console.debug(e); - deferred.errback(e); - doh.assertTrue(false); - passed = false; - } - if(passed){ - deferred.callback(true); - } - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); - return deferred; - }, - function testReferenceIntegrity_disableReferenceIntegrity(){ - // summary: - // Simple test to verify reference integrity can be disabled. - // description: - // Simple test to verify reference integrity can be disabled. - - var params = tests.data.ItemFileWriteStore.getTestData("reference_integrity"); - params.referenceIntegrity = false; - var store = new dojo.data.ItemFileWriteStore(params); - - var deferred = new doh.Deferred(); - function onError(error, request){ - deferred.errback(error); - doh.assertTrue(false); - } - function onItem(item, request){ - //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! - //THIS IS FOR TESTING INTERNAL STATE! - if(item[store._reverseRefMap] === undefined){ - deferred.callback(true); - }else{ - deferred.errback(new Error("Disabling of reference integrity failed.")); - } - } - store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); - return deferred; - } - ] -); - - - -} diff --git a/includes/js/dojo/tests/data/countries.json b/includes/js/dojo/tests/data/countries.json deleted file mode 100644 index 71631da..0000000 --- a/includes/js/dojo/tests/data/countries.json +++ /dev/null @@ -1,11 +0,0 @@ -{ identifier: 'abbr', - label: 'name', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito' }, - { abbr:'eg', name:'Egypt', capital:'Cairo' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', name:'Eritrea', capital:'Asmara' }, - { abbr:'ee', name:'Estonia', capital:'Tallinn' }, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } -]} diff --git a/includes/js/dojo/tests/data/countries_commentFiltered.json b/includes/js/dojo/tests/data/countries_commentFiltered.json deleted file mode 100644 index 319e429..0000000 --- a/includes/js/dojo/tests/data/countries_commentFiltered.json +++ /dev/null @@ -1,12 +0,0 @@ -/* -{ identifier: 'abbr', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito' }, - { abbr:'eg', name:'Egypt', capital:'Cairo' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', name:'Eritrea', capital:'Asmara' }, - { abbr:'ee', name:'Estonia', capital:'Tallinn' }, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } -]} -*/ diff --git a/includes/js/dojo/tests/data/countries_idcollision.json b/includes/js/dojo/tests/data/countries_idcollision.json deleted file mode 100644 index a0c4a7b..0000000 --- a/includes/js/dojo/tests/data/countries_idcollision.json +++ /dev/null @@ -1,10 +0,0 @@ -{ identifier: 'abbr', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', name:'Eritrea', capital:'Asmara' }, - { abbr:'ec', name:'Egypt', capital:'Cairo' }, - { abbr:'ee', name:'Estonia', capital:'Tallinn' }, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } -]} diff --git a/includes/js/dojo/tests/data/countries_references.json b/includes/js/dojo/tests/data/countries_references.json deleted file mode 100644 index 136f3c2..0000000 --- a/includes/js/dojo/tests/data/countries_references.json +++ /dev/null @@ -1,44 +0,0 @@ -{ 'identifier': 'name', - 'label': 'name', - 'items': [ - { 'name':'Africa', 'type':'continent', - 'children':[{'_reference':'Egypt'}, {'_reference':'Kenya'}, {'_reference':'Sudan'}] }, - { 'name':'Egypt', 'type':'country' }, - { 'name':'Kenya', 'type':'country', - 'children':[{'_reference':'Nairobi'}, {'_reference':'Mombasa'}] }, - { 'name':'Nairobi', 'type':'city' }, - { 'name':'Mombasa', 'type':'city' }, - { 'name':'Sudan', 'type':'country', - 'children':{'_reference':'Khartoum'} }, - { 'name':'Khartoum', 'type':'city' }, - { 'name':'Asia', 'type':'continent', - 'children':[{'_reference':'China'}, {'_reference':'India'}, {'_reference':'Russia'}, {'_reference':'Mongolia'}] }, - { 'name':'China', 'type':'country' }, - { 'name':'India', 'type':'country' }, - { 'name':'Russia', 'type':'country' }, - { 'name':'Mongolia', 'type':'country' }, - { 'name':'Australia', 'type':'continent', 'population':'21 million', - 'children':{'_reference':'Commonwealth of Australia'}}, - { 'name':'Commonwealth of Australia', 'type':'country', 'population':'21 million'}, - { 'name':'Europe', 'type':'continent', - 'children':[{'_reference':'Germany'}, {'_reference':'France'}, {'_reference':'Spain'}, {'_reference':'Italy'}] }, - { 'name':'Germany', 'type':'country' }, - { 'name':'France', 'type':'country' }, - { 'name':'Spain', 'type':'country' }, - { 'name':'Italy', 'type':'country' }, - { 'name':'North America', 'type':'continent', - 'children':[{'_reference':'Mexico'}, {'_reference':'Canada'}, {'_reference':'United States of America'}] }, - { 'name':'Mexico', 'type':'country', 'population':'108 million', area:'1,972,550 sq km', - 'children':[{'_reference':'Mexico City'}, {'_reference':'Guadalajara'}] }, - { 'name':'Mexico City', 'type':'city', 'population':'19 million', 'timezone':'-6 UTC'}, - { 'name':'Guadalajara', 'type':'city', 'population':'4 million', 'timezone':'-6 UTC' }, - { 'name':'Canada', 'type':'country', 'population':'33 million', area:'9,984,670 sq km', - 'children':[{'_reference':'Ottawa'}, {'_reference':'Toronto'}] }, - { 'name':'Ottawa', 'type':'city', 'population':'0.9 million', 'timezone':'-5 UTC'}, - { 'name':'Toronto', 'type':'city', 'population':'2.5 million', 'timezone':'-5 UTC' }, - { 'name':'United States of America', 'type':'country' }, - { 'name':'South America', 'type':'continent', - 'children':[{'_reference':'Brazil'}, {'_reference':'Argentina'}] }, - { 'name':'Brazil', 'type':'country', 'population':'186 million' }, - { 'name':'Argentina', 'type':'country', 'population':'40 million' } -]} diff --git a/includes/js/dojo/tests/data/countries_withBoolean.json b/includes/js/dojo/tests/data/countries_withBoolean.json deleted file mode 100644 index 783d8a8..0000000 --- a/includes/js/dojo/tests/data/countries_withBoolean.json +++ /dev/null @@ -1,11 +0,0 @@ -{ identifier: 'abbr', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito', real:true}, - { abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, - { abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, - { abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, - { abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, - { abbr:'ut', name:'Utopia', capital:'Paradise', real:false} -]} diff --git a/includes/js/dojo/tests/data/countries_withDates.json b/includes/js/dojo/tests/data/countries_withDates.json deleted file mode 100644 index fdd2153..0000000 --- a/includes/js/dojo/tests/data/countries_withDates.json +++ /dev/null @@ -1,21 +0,0 @@ -{ identifier: 'abbr', - label: 'name', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito' }, - { abbr:'eg', name:'Egypt', capital:'Cairo' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', - name:'Eritrea', - capital:'Asmara', - independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"} // May 24, 1993 in ISO-8601 standard - }, - { abbr:'ee', - name:'Estonia', - capital:'Tallinn', - independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"} // August 20, 1991 in ISO-8601 standard - }, - { abbr:'et', - name:'Ethiopia', - capital:'Addis Ababa' } -]} diff --git a/includes/js/dojo/tests/data/countries_withNull.json b/includes/js/dojo/tests/data/countries_withNull.json deleted file mode 100644 index a0a7a3f..0000000 --- a/includes/js/dojo/tests/data/countries_withNull.json +++ /dev/null @@ -1,10 +0,0 @@ -{ identifier: 'abbr', - items: [ - { abbr:'ec', name:null, capital:'Quito' }, - { abbr:'eg', name:null, capital:'Cairo' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', name:'Eritrea', capital:'Asmara' }, - { abbr:'ee', name:null, capital:'Tallinn' }, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } -]} diff --git a/includes/js/dojo/tests/data/countries_withoutid.json b/includes/js/dojo/tests/data/countries_withoutid.json deleted file mode 100644 index 8db3046..0000000 --- a/includes/js/dojo/tests/data/countries_withoutid.json +++ /dev/null @@ -1,10 +0,0 @@ -{ label: 'name', - items: [ - { abbr:'ec', name:'Ecuador', capital:'Quito' }, - { abbr:'eg', name:'Egypt', capital:'Cairo' }, - { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, - { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, - { abbr:'er', name:'Eritrea', capital:'Asmara' }, - { abbr:'ee', name:'Estonia', capital:'Tallinn' }, - { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } -]} diff --git a/includes/js/dojo/tests/data/data_multitype.json b/includes/js/dojo/tests/data/data_multitype.json deleted file mode 100644 index 449995a..0000000 --- a/includes/js/dojo/tests/data/data_multitype.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "identifier": "count", - "label": "count", - "items": [ - { "count": 1, "value": "true" }, - { "count": 2, "value": true }, - { "count": 3, "value": "false"}, - { "count": 4, "value": false }, - { "count": 5, "value": true }, - { "count": 6, "value": true }, - { "count": 7, "value": "true" }, - { "count": 8, "value": "true" }, - { "count": 9, "value": "false"}, - { "count": 10, "value": false }, - { "count": 11, "value": [false, false]}, - { "count": "12", "value": [false, "true"]} - ] -} diff --git a/includes/js/dojo/tests/data/geography_hierarchy_large.json b/includes/js/dojo/tests/data/geography_hierarchy_large.json deleted file mode 100644 index 71fd29b..0000000 --- a/includes/js/dojo/tests/data/geography_hierarchy_large.json +++ /dev/null @@ -1,44 +0,0 @@ -{ identifier: 'name',
- items: [
- { name:'Africa', type:'continent', children:[
- { name:'Egypt', type:'country' },
- { name:'Kenya', type:'country', children:[
- { name:'Nairobi', type:'city' },
- { name:'Mombasa', type:'city' } ]
- },
- { name:'Sudan', type:'country', children:
- { name:'Khartoum', type:'city' }
- } ]
- },
- { name:'Asia', type:'continent', children:[
- { name:'China', type:'country' },
- { name:'India', type:'country' },
- { name:'Russia', type:'country' },
- { name:'Mongolia', type:'country' } ]
- },
- { name:'Australia', type:'continent', population:'21 million', children:
- { name:'Commonwealth of Australia', type:'country', population:'21 million'}
- },
- { name:'Europe', type:'continent', children:[
- { name:'Germany', type:'country' },
- { name:'France', type:'country' },
- { name:'Spain', type:'country' },
- { name:'Italy', type:'country' } ]
- },
- { name:'North America', type:'continent', children:[
- { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', children:[
- { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'},
- { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' } ]
- },
- { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', children:[
- { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'},
- { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }]
- },
- { name:'United States of America', type:'country' } ]
- },
- { name:'South America', type:'continent', children:[
- { name:'Brazil', type:'country', population:'186 million' },
- { name:'Argentina', type:'country', population:'40 million' } ]
- } ]
-}
-
diff --git a/includes/js/dojo/tests/data/geography_hierarchy_small.json b/includes/js/dojo/tests/data/geography_hierarchy_small.json deleted file mode 100644 index 989e5f7..0000000 --- a/includes/js/dojo/tests/data/geography_hierarchy_small.json +++ /dev/null @@ -1,19 +0,0 @@ -{ items:[ - { name:'Africa', countries:[ - { name:'Egypt', capital:'Cairo' }, - { name:'Kenya', capital:'Nairobi' }, - { name:'Sudan', capital:'Khartoum' }]}, - { name:'Australia', capital:'Canberra' }, - { name:'North America', countries:[ - { name:'Canada', population:'33 million', cities:[ - { name:'Toronto', population:'2.5 million' }, - { name:'Alberta', population:'1 million' } - ]}, - { name: 'United States of America', capital: 'Washington DC', states:[ - { name: 'Missouri'}, - { name: 'Arkansas'} - ]} - ]} - ] -} - diff --git a/includes/js/dojo/tests/data/readOnlyItemFileTestTemplates.js b/includes/js/dojo/tests/data/readOnlyItemFileTestTemplates.js deleted file mode 100644 index 7e194b4..0000000 --- a/includes/js/dojo/tests/data/readOnlyItemFileTestTemplates.js +++ /dev/null @@ -1,2260 +0,0 @@ -if(!dojo._hasResource["tests.data.readOnlyItemFileTestTemplates"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["tests.data.readOnlyItemFileTestTemplates"] = true; -dojo.provide("tests.data.readOnlyItemFileTestTemplates"); -dojo.require("dojo.data.api.Read"); -dojo.require("dojo.data.api.Identity"); -dojo.require("dojo.date"); -dojo.require("dojo.date.stamp"); - - -tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore = function(/* String */ datastoreClassName){ - // summary: - // Given the name of a datastore class to use, this function creates - // a set of unit tests for that datastore, and registers the new test - // group with the doh test framework. The new unit tests are based - // on a set of "template" unit tests. - var datastoreClass = dojo.getObject(datastoreClassName); - var testTemplates = tests.data.readOnlyItemFileTestTemplates.testTemplates; - var testsForDatastore = []; - var makeNewTestFunction = function(template){ - return function(t){return template.runTest(datastoreClass, t);}; - }; - for(var i = 0; i < testTemplates.length; ++i) { - var testTemplate = testTemplates[i]; - var test = {}; - test.name = testTemplate.name; - test.runTest = makeNewTestFunction(testTemplate); - testsForDatastore.push(test); - } - var testGroupName = "tests.data.readOnlyItemFileTestTemplates, with datastore " + datastoreClassName; - doh.register(testGroupName, testsForDatastore); -}; - - -//----------------------------------------------------- -// testFile data-sets -tests.data.readOnlyItemFileTestTemplates.getTestData = function(name){ - var data = null; - if(name === "countries"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries.json").toString() }; - }else{ - data = {data: { - identifier:"abbr", - label:"name", - items:[ - {abbr:"ec", name:"Ecuador", capital:"Quito"}, - {abbr:'eg', name:'Egypt', capital:'Cairo'}, - {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, - {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, - {abbr:'er', name:'Eritrea', capital:'Asmara'}, - {abbr:'ee', name:'Estonia', capital:'Tallinn'}, - {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - } - }else if(name === "countries_withNull"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries_withNull.json").toString() }; - }else{ - data = {data: { - identifier:"abbr", - items:[ - {abbr:"ec", name:null, capital:"Quito"}, - {abbr:'eg', name:null, capital:'Cairo'}, - {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, - {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, - {abbr:'er', name:'Eritrea', capital:'Asmara'}, - {abbr:'ee', name:null, capital:'Tallinn'}, - {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - } - }else if(name === "countries_withoutid"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries_withoutid.json").toString() }; - }else{ - data = {data: { - label: "name", - items:[ - {abbr:"ec", name:null, capital:"Quito"}, - {abbr:'eg', name:null, capital:'Cairo'}, - {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, - {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, - {abbr:'er', name:'Eritrea', capital:'Asmara'}, - {abbr:'ee', name:null, capital:'Tallinn'}, - {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - } - }else if (name === "countries_withBoolean"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries_withBoolean.json").toString() }; - }else{ - data = {data: { - identifier:"abbr", - items:[ - {abbr:"ec", name:"Ecuador", capital:"Quito", real:true}, - {abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, - {abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, - {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, - {abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, - {abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, - {abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, - {abbr:'ut', name:'Utopia', capital:'Paradise', real:false} - ] - } }; - } - }else if (name === "countries_withDates"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries_withDates.json").toString() }; - }else{ - data = {data: { - identifier:"abbr", - items:[ - {abbr:"ec", name:"Ecuador", capital:"Quito"}, - {abbr:'eg', name:'Egypt', capital:'Cairo'}, - {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, - {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, - {abbr:'er', name:'Eritrea', capital:'Asmara', independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"}}, // May 24, 1993, - {abbr:'ee', name:'Estonia', capital:'Tallinn', independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"}}, // August 20, 1991 - {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} - ] - } }; - } - }else if (name === "geography_hierarchy_small"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/geography_hierarchy_small.json").toString() }; - }else{ - data = {data: { - items:[ - { name:'Africa', countries:[ - { name:'Egypt', capital:'Cairo' }, - { name:'Kenya', capital:'Nairobi' }, - { name:'Sudan', capital:'Khartoum' }]}, - { name:'Australia', capital:'Canberra' }, - { name:'North America', countries:[ - { name:'Canada', population:'33 million', cities:[ - { name:'Toronto', population:'2.5 million' }, - { name:'Alberta', population:'1 million' } - ]}, - { name: 'United States of America', capital: 'Washington DC', states:[ - { name: 'Missouri'}, - { name: 'Arkansas'} - ]} - ]} - ] - }}; - } - }else if (name === "data_multitype"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/data_multitype.json").toString() }; - }else{ - data = {data: { - "identifier": "count", - "label": "count", - items: [ - { count: 1, value: "true" }, - { count: 2, value: true }, - { count: 3, value: "false"}, - { count: 4, value: false }, - { count: 5, value: true }, - { count: 6, value: true }, - { count: 7, value: "true" }, - { count: 8, value: "true" }, - { count: 9, value: "false"}, - { count: 10, value: false }, - { count: 11, value: [false, false]}, - { count: "12", value: [false, "true"]} - ] - } - }; - } - }else if (name === "countries_references"){ - if(dojo.isBrowser){ - data = {url: dojo.moduleUrl("tests", "data/countries_references.json").toString() }; - }else{ - data = {data: { identifier: 'name', - label: 'name', - items: [ - { name:'Africa', type:'continent', - children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, - { name:'Egypt', type:'country' }, - { name:'Kenya', type:'country', - children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, - { name:'Nairobi', type:'city' }, - { name:'Mombasa', type:'city' }, - { name:'Sudan', type:'country', - children:{_reference:'Khartoum'} }, - { name:'Khartoum', type:'city' }, - { name:'Asia', type:'continent', - children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, - { name:'China', type:'country' }, - { name:'India', type:'country' }, - { name:'Russia', type:'country' }, - { name:'Mongolia', type:'country' }, - { name:'Australia', type:'continent', population:'21 million', - children:{_reference:'Commonwealth of Australia'}}, - { name:'Commonwealth of Australia', type:'country', population:'21 million'}, - { name:'Europe', type:'continent', - children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, - { name:'Germany', type:'country' }, - { name:'France', type:'country' }, - { name:'Spain', type:'country' }, - { name:'Italy', type:'country' }, - { name:'North America', type:'continent', - children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, - { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', - children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, - { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, - { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, - { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', - children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, - { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, - { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, - { name:'United States of America', type:'country' }, - { name:'South America', type:'continent', - children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, - { name:'Brazil', type:'country', population:'186 million' }, - { name:'Argentina', type:'country', population:'40 million' } - ] - } - }; - } - } - return data; -}; - -//----------------------------------------------------- -// testTemplates -tests.data.readOnlyItemFileTestTemplates.testTemplates = [ - { - name: "Identity API: fetchItemByIdentity()", - runTest: function(datastore, t){ - // summary: - // Simple test of the fetchItemByIdentity function of the store. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - if(item !== null){ - var name = store.getValue(item,"name"); - t.assertEqual(name, "El Salvador"); - } - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: fetchItemByIdentity() notFound", - runTest: function(datastore, t){ - // summary: - // Simple test of the fetchItemByIdentity function of the store. - // description: - // Simple test of the fetchItemByIdentity function of the store. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item === null); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv_not", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: getIdentityAttributes()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getIdentityAttributes function. - // description: - // Simple test of the getIdentityAttributes function. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null) - var identifiers = store.getIdentityAttributes(item); - t.assertTrue(dojo.isArray(identifiers)); - t.assertEqual(1, identifiers.length); - t.assertEqual("abbr", identifiers[0]); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: fetchItemByIdentity() commentFilteredJson", - runTest: function(datastore, t){ - // summary: - // Simple test of the fetchItemByIdentity function of the store. - // description: - // Simple test of the fetchItemByIdentity function of the store. - // This tests loading a comment-filtered json file so that people using secure - // data with this store can bypass the JavaSceipt hijack noted in Fortify's - // paper. - - if(dojo.isBrowser){ - var store = new datastore({url: dojo.moduleUrl("tests", "data/countries_commentFiltered.json").toString()}); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertEqual(name, "El Salvador"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - } - }, - { - name: "Identity API: fetchItemByIdentity() nullValue", - runTest: function(datastore, t){ - // summary: - // Simple test of the fetchItemByIdentity function of the store, checling a null value. - // description: - // Simple test of the fetchItemByIdentity function of the store, checking a null value. - // This tests handling attributes in json that were defined as null properly. - // Introduced because of tracker: #3153 - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withNull")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertEqual(name, null); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "ec", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: fetchItemByIdentity() booleanValue", - runTest: function(datastore, t){ - // summary: - // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. - // description: - // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withBoolean")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertEqual(name, "Utopia"); - var real = store.getValue(item,"real"); - t.assertEqual(real, false); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "ut", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: fetchItemByIdentity() withoutSpecifiedIdInData", - runTest: function(datastore, t){ - // summary: - // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. - // description: - // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertEqual(name, "El Salvador"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "2", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: getIdentity()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getIdentity function of the store. - // description: - // Simple test of the getIdentity function of the store. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - t.assertTrue(store.getIdentity(item) === "sv"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Identity API: getIdentity() withoutSpecifiedId", - runTest: function(datastore, t){ - // summary: - // Simple test of the #4691 bug - // description: - // Simple test of the #4691 bug - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); - - var d = new doh.Deferred(); - function onItem(item, request){ - t.assertTrue(item !== null); - t.assertTrue(store.getIdentity(item) === 2); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query:{abbr: "sv"}, onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: fetch() all", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore. - // description: - // Simple test of a basic fetch on ItemFileReadStore. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function completedAll(items, request){ - t.is(7, items.length); - d.callback(true); - } - function error(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - - //Get everything... - store.fetch({ onComplete: completedAll, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() one", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore of a single item. - // description: - // Simple test of a basic fetch on ItemFileReadStore of a single item. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 1); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {abbr: "ec"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: fetch() shallow", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore of only toplevel items - // description: - // Simple test of a basic fetch on ItemFileReadStore of only toplevel items. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 2); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - //Find all items starting with A, only toplevel (root) items. - store.fetch({ query: {name: "A*"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: fetch() Multiple", - runTest: function(datastore, t){ - // summary: - // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. - // description: - // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); - - var d = new doh.Deferred(); - var done = [false, false]; - - function onCompleteOne(items, request){ - done[0] = true; - t.assertEqual(items.length, 2); - if(done[0] && done[1]){ - d.callback(true); - } - } - function onCompleteTwo(items, request){ - done[1] = true; - if(done[0] && done[1]){ - d.callback(true); - } - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - //Find all items starting with A, only toplevel (root) items. - store.fetch({ query: {name: "A*"}, - onComplete: onCompleteOne, - onError: onError - }); - - //Find all items starting with A, only toplevel (root) items. - store.fetch({ query: {name: "N*"}, - onComplete: onCompleteTwo, - onError: onError - }); - - return d; - } - }, - { - name: "Read API: fetch() MultipleMixedFetch", - runTest: function(datastore, t){ - // summary: - // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. - // description: - // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. - // Tests an item fetch and an identity fetch. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - var done = [false, false]; - - function onComplete(items, request){ - done[0] = true; - t.assertEqual(items.length, 1); - if(done[0] && done[1]){ - d.callback(true); - } - } - function onItem(item){ - done[1] = true; - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertEqual(name, "El Salvador"); - - if(done[0] && done[1]){ - d.callback(true); - } - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - - //Find all items starting with A, only toplevel (root) items. - store.fetch({ query: {name: "El*"}, - onComplete: onComplete, - onError: onError - }); - - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; - } - }, - { - name: "Read API: fetch() deep", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore of all items (including children (nested)) - // description: - // Simple test of a basic fetch on ItemFileReadStore of all items (including children (nested)) - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 4); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - //Find all items starting with A, including child (nested) items. - store.fetch({ query: {name: "A*"}, - onComplete: onComplete, - onError: onError, - queryOptions: {deep:true} - }); - return d; - } - }, - { - name: "Read API: fetch() one_commentFilteredJson", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore of a single item. - // description: - // Simple test of a basic fetch on ItemFileReadStore of a single item. - // This tests loading a comment-filtered json file so that people using secure - // data with this store can bypass the JavaSceipt hijack noted in Fortify's - // paper. - if(dojo.isBrowser){ - var store = new datastore({url: dojo.moduleUrl("tests", "data/countries_commentFiltered.json").toString()}); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 1); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {abbr: "ec"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - } - }, - { - name: "Read API: fetch() withNull", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore of a single item where some attributes are null. - // description: - // Simple test of a basic fetch on ItemFileReadStore of a single item where some attributes are null. - // Introduced because of tracker: #3153 - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withNull")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(4, items.length); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {name: "E*"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: fetch() all_streaming", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch on ItemFileReadStore. - // description: - // Simple test of a basic fetch on ItemFileReadStore. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - count = 0; - - function onBegin(size, requestObj){ - t.assertEqual(size, 7); - } - function onItem(item, requestObj){ - t.assertTrue(store.isItem(item)); - count++; - } - function onComplete(items, request){ - t.assertEqual(count, 7); - t.assertTrue(items === null); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - - //Get everything... - store.fetch({ onBegin: onBegin, - onItem: onItem, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: fetch() paging", - runTest: function(datastore, t){ - // summary: - // Test of multiple fetches on a single result. Paging, if you will. - // description: - // Test of multiple fetches on a single result. Paging, if you will. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function dumpFirstFetch(items, request){ - t.assertEqual(items.length, 5); - request.start = 3; - request.count = 1; - request.onComplete = dumpSecondFetch; - store.fetch(request); - } - - function dumpSecondFetch(items, request){ - t.assertEqual(items.length, 1); - request.start = 0; - request.count = 5; - request.onComplete = dumpThirdFetch; - store.fetch(request); - } - - function dumpThirdFetch(items, request){ - t.assertEqual(items.length, 5); - request.start = 2; - request.count = 20; - request.onComplete = dumpFourthFetch; - store.fetch(request); - } - - function dumpFourthFetch(items, request){ - t.assertEqual(items.length, 5); - request.start = 9; - request.count = 100; - request.onComplete = dumpFifthFetch; - store.fetch(request); - } - - function dumpFifthFetch(items, request){ - t.assertEqual(items.length, 0); - request.start = 2; - request.count = 20; - request.onComplete = dumpSixthFetch; - store.fetch(request); - } - - function dumpSixthFetch(items, request){ - t.assertEqual(items.length, 5); - d.callback(true); - } - - function completed(items, request){ - t.assertEqual(items.length, 7); - request.start = 1; - request.count = 5; - request.onComplete = dumpFirstFetch; - store.fetch(request); - } - - function error(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() with MultiType Match", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch againct an attribute that has different types for the value across items - // description: - // Simple test of a basic fetch againct an attribute that has different types for the value across items - // Introduced because of tracker: #4931 - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("data_multitype")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(4, items.length); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {count: "1*"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: fetch() with MultiType, MultiValue Match", - runTest: function(datastore, t){ - // summary: - // Simple test of a basic fetch againct an attribute that has different types for the value across items - // description: - // Simple test of a basic fetch againct an attribute that has different types for the value across items - // Introduced because of tracker: #4931 - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("data_multitype")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(7, items.length); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {value: "true"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: getLabel()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getLabel function against a store set that has a label defined. - // description: - // Simple test of the getLabel function against a store set that has a label defined. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 1); - var label = store.getLabel(items[0]); - t.assertTrue(label !== null); - t.assertEqual("Ecuador", label); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {abbr: "ec"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: getLabelAttributes()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getLabelAttributes function against a store set that has a label defined. - // description: - // Simple test of the getLabelAttributes function against a store set that has a label defined. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 1); - var labelList = store.getLabelAttributes(items[0]); - t.assertTrue(dojo.isArray(labelList)); - t.assertEqual("name", labelList[0]); - d.callback(true); - } - function onError(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({ query: {abbr: "ec"}, - onComplete: onComplete, - onError: onError - }); - return d; - } - }, - { - name: "Read API: getValue()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getValue function of the store. - // description: - // Simple test of the getValue function of the store. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var name = store.getValue(item,"name"); - t.assertTrue(name === "El Salvador"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: getValues()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getValues function of the store. - // description: - // Simple test of the getValues function of the store. - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var names = store.getValues(item,"name"); - t.assertTrue(dojo.isArray(names)); - t.assertEqual(names.length, 1); - t.assertEqual(names[0], "El Salvador"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: isItem()", - runTest: function(datastore, t){ - // summary: - // Simple test of the isItem function of the store - // description: - // Simple test of the isItem function of the store - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - t.assertTrue(store.isItem(item)); - t.assertTrue(!store.isItem({})); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: isItem() multistore", - runTest: function(datastore, t){ - // summary: - // Simple test of the isItem function of the store - // to verify two different store instances do not accept - // items from each other. - // description: - // Simple test of the isItem function of the store - // to verify two different store instances do not accept - // items from each other. - - // Two different instances, even if they read from the same URL - // should not accept items between each other! - var store1 = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - var store2 = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem1(item1){ - t.assertTrue(item1 !== null); - - function onItem2(item2){ - t.assertTrue(item1 !== null); - t.assertTrue(item2 !== null); - t.assertTrue(store1.isItem(item1)); - t.assertTrue(store2.isItem(item2)); - t.assertTrue(!store1.isItem(item2)); - t.assertTrue(!store2.isItem(item1)); - d.callback(true); - } - store2.fetchItemByIdentity({identity: "sv", onItem: onItem2, onError: onError}); - - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store1.fetchItemByIdentity({identity: "sv", onItem: onItem1, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: hasAttribute()", - runTest: function(datastore, t){ - // summary: - // Simple test of the hasAttribute function of the store - // description: - // Simple test of the hasAttribute function of the store - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - t.assertTrue(store.hasAttribute(item, "abbr")); - t.assertTrue(!store.hasAttribute(item, "abbr_not")); - - //Test that null attributes throw an exception - var passed = false; - try{ - store.hasAttribute(item, null); - }catch (e){ - passed = true; - } - t.assertTrue(passed); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: containsValue()", - runTest: function(datastore, t){ - // summary: - // Simple test of the containsValue function of the store - // description: - // Simple test of the containsValue function of the store - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - t.assertTrue(store.containsValue(item, "abbr", "sv")); - t.assertTrue(!store.containsValue(item, "abbr", "sv1")); - t.assertTrue(!store.containsValue(item, "abbr", null)); - - //Test that null attributes throw an exception - var passed = false; - try{ - store.containsValue(item, null, "foo"); - }catch (e){ - passed = true; - } - t.assertTrue(passed); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: getAttributes()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getAttributes function of the store - // description: - // Simple test of the getAttributes function of the store - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - t.assertTrue(store.isItem(item)); - - var attributes = store.getAttributes(item); - t.assertEqual(attributes.length, 3); - for(var i = 0; i < attributes.length; i++){ - t.assertTrue((attributes[i] === "name" || attributes[i] === "abbr" || attributes[i] === "capital")); - } - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); - return d; // Deferred - } - }, - { - name: "Read API: getFeatures()", - runTest: function(datastore, t){ - // summary: - // Simple test of the getFeatures function of the store - // description: - // Simple test of the getFeatures function of the store - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var features = store.getFeatures(); - t.assertTrue(features["dojo.data.api.Read"] != null); - t.assertTrue(features["dojo.data.api.Identity"] != null); - } - }, - { - name: "Read API: fetch() patternMatch0", - runTest: function(datastore, t){ - // summary: - // Function to test pattern matching of everything starting with lowercase e - // description: - // Function to test pattern matching of everything starting with lowercase e - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - - var d = new doh.Deferred(); - function completed(items, request) { - t.assertEqual(items.length, 5); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "abbr"); - if(!(value === "ec" || value === "eg" || value === "er" || value === "ee" || value === "et")){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected abbreviation found, match failure.")); - } - } - function error(error, request) { - t.assertTrue(false); - d.errback(error); - } - store.fetch({query: {abbr: "e*"}, onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() patternMatch1", - runTest: function(datastore, t){ - // summary: - // Function to test pattern matching of everything with $ in it. - // description: - // Function to test pattern matching of everything with $ in it. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, value:"foo*bar"}, - {uniqueId: 2, value:"bar*foo"}, - {uniqueId: 3, value:"boomBam"}, - {uniqueId: 4, value:"bit$Bite"}, - {uniqueId: 5, value:"ouagadogou"}, - {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, - {uniqueId: 7, value:"squawl"}, - {uniqueId: 8, value:"seaweed"}, - {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 2); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(value === "bit$Bite" || value === "jfq4@#!$!@Rf14r14i5u")){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected pattern matched. Filter failure.")); - } - } - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - store.fetch({query: {value: "*$*"}, onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() patternMatch2", - runTest: function(datastore, t){ - // summary: - // Function to test exact pattern match - // description: - // Function to test exact pattern match - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, value:"foo*bar"}, - {uniqueId: 2, value:"bar*foo"}, - {uniqueId: 3, value:"boomBam"}, - {uniqueId: 4, value:"bit$Bite"}, - {uniqueId: 5, value:"ouagadogou"}, - {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, - {uniqueId: 7, value:"squawl"}, - {uniqueId: 8, value:"seaweed"}, - {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 1); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(value === "bar*foo")){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected abbreviation found, match failure.")); - } - } - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - store.fetch({query: {value: "bar\*foo"}, onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() patternMatch_caseSensitive", - runTest: function(datastore, t){ - // summary: - // Function to test pattern matching of a pattern case-sensitively - // description: - // Function to test pattern matching of a pattern case-sensitively - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, value:"foo*bar"}, - {uniqueId: 2, value:"bar*foo"}, - {uniqueId: 3, value:"BAR*foo"}, - {uniqueId: 4, value:"BARBananafoo"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(1, items.length); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(value === "bar*foo")){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected pattern matched. Filter failure.")); - } - } - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - store.fetch({query: {value: "bar\\*foo"}, queryOptions: {ignoreCase: false} , onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() patternMatch_caseInsensitive", - runTest: function(datastore, t){ - // summary: - // Function to test pattern matching of a pattern case-insensitively - // description: - // Function to test pattern matching of a pattern case-insensitively - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, value:"foo*bar"}, - {uniqueId: 2, value:"bar*foo"}, - {uniqueId: 3, value:"BAR*foo"}, - {uniqueId: 4, value:"BARBananafoo"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 2); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(value === "BAR*foo" || value === "bar*foo")){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected pattern matched. Filter failure.")); - } - } - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - store.fetch({query: {value: "bar\\*foo"}, queryOptions: {ignoreCase: true}, onComplete: completed, onError: error}); - return d; - } - }, - { - name: "Read API: fetch() sortNumeric", - runTest: function(datastore, t){ - // summary: - // Function to test sorting numerically. - // description: - // Function to test sorting numerically. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"fo|o*b.ar"}, - {uniqueId: 1, value:"ba|r*foo"}, - {uniqueId: 2, value:"boomBam"}, - {uniqueId: 3, value:"bit$Bite"}, - {uniqueId: 4, value:"ouagadogou"}, - {uniqueId: 5, value:"jfq4@#!$!@|f1.$4r14i5u"}, - {uniqueId: 6, value:"BaB{aMa|SaRa***F}oo"}, - {uniqueId: 7, value:"squawl"}, - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"zulu"}, - {uniqueId: 8, value:"seaweed"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "uniqueId") === i)){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "uniqueId"}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortNumericDescending", - runTest: function(datastore, t){ - // summary: - // Function to test sorting numerically. - // description: - // Function to test sorting numerically. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"fo|o*b.ar"}, - {uniqueId: 1, value:"ba|r*foo"}, - {uniqueId: 2, value:"boomBam"}, - {uniqueId: 3, value:"bit$Bite"}, - {uniqueId: 4, value:"ouagadogou"}, - {uniqueId: 5, value:"jfq4@#!$!@|f1.$4r14i5u"}, - {uniqueId: 6, value:"BaB{aMa|SaRa***F}oo"}, - {uniqueId: 7, value:"squawl"}, - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"zulu"}, - {uniqueId: 8, value:"seaweed"} - ] - } - }); - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!((items.length - (store.getValue(items[i], "uniqueId") + 1)) === i)){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "uniqueId", descending: true}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortNumericWithCount", - runTest: function(datastore, t){ - // summary: - // Function to test sorting numerically in descending order, returning only a specified number of them. - // description: - // Function to test sorting numerically in descending order, returning only a specified number of them. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"fo|o*b.ar"}, - {uniqueId: 1, value:"ba|r*foo"}, - {uniqueId: 2, value:"boomBam"}, - {uniqueId: 3, value:"bit$Bite"}, - {uniqueId: 4, value:"ouagadogou"}, - {uniqueId: 5, value:"jfq4@#!$!@|f1.$4r14i5u"}, - {uniqueId: 6, value:"BaB{aMa|SaRa***F}oo"}, - {uniqueId: 7, value:"squawl"}, - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"zulu"}, - {uniqueId: 8, value:"seaweed"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - t.assertEqual(items.length, 5); - var itemId = 10; - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "uniqueId") === itemId)){ - passed=false; - break; - } - itemId--; // Decrement the item id. We are descending sorted, so it should go 10, 9, 8, etc. - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "uniqueId", descending: true}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes, count: 5}); - return d; - } - }, - { - name: "Read API: fetch() sortAlphabetic", - runTest: function(datastore, t){ - // summary: - // Function to test sorting alphabetic ordering. - // description: - // Function to test sorting alphabetic ordering. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"abc"}, - {uniqueId: 1, value:"bca"}, - {uniqueId: 2, value:"abcd"}, - {uniqueId: 3, value:"abcdefg"}, - {uniqueId: 4, value:"lmnop"}, - {uniqueId: 5, value:"foghorn"}, - {uniqueId: 6, value:"qberty"}, - {uniqueId: 7, value:"qwerty"}, - {uniqueId: 8, value:""}, - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"123abc"} - - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - //Output should be in this order... - var orderedArray = [ "", - "123abc", - "abc", - "abcd", - "abcdefg", - "bca", - "foghorn", - "lmnop", - "qberty", - "qwerty", - "seaweed" - ]; - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "value") === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request) { - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "value"}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortAlphabeticDescending", - runTest: function(datastore, t){ - // summary: - // Function to test sorting alphabetic ordering in descending mode. - // description: - // Function to test sorting alphabetic ordering in descending mode. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"abc"}, - {uniqueId: 1, value:"bca"}, - {uniqueId: 2, value:"abcd"}, - {uniqueId: 3, value:"abcdefg"}, - {uniqueId: 4, value:"lmnop"}, - {uniqueId: 5, value:"foghorn"}, - {uniqueId: 6, value:"qberty"}, - {uniqueId: 7, value:"qwerty"}, - {uniqueId: 8, value:""}, - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"123abc"} - - ] - } - }); - var d = new doh.Deferred(); - function completed(items, request){ - //Output should be in this order... - var orderedArray = [ "", - "123abc", - "abc", - "abcd", - "abcdefg", - "bca", - "foghorn", - "lmnop", - "qberty", - "qwerty", - "seaweed" - ]; - orderedArray = orderedArray.reverse(); - t.assertEqual(items.length, 11); - - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "value") === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request) { - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "value", descending: true}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortDate", - runTest: function(datastore, t){ - // summary: - // Function to test sorting date. - // description: - // Function to test sorting date. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value: new Date(0)}, - {uniqueId: 1, value: new Date(100)}, - {uniqueId: 2, value:new Date(1000)}, - {uniqueId: 3, value:new Date(2000)}, - {uniqueId: 4, value:new Date(3000)}, - {uniqueId: 5, value:new Date(4000)}, - {uniqueId: 6, value:new Date(5000)}, - {uniqueId: 7, value:new Date(6000)}, - {uniqueId: 8, value:new Date(7000)}, - {uniqueId: 9, value:new Date(8000)}, - {uniqueId: 10, value:new Date(9000)} - - ] - } - }); - - var d = new doh.Deferred(); - function completed(items,request){ - var orderedArray = [0,100,1000,2000,3000,4000,5000,6000,7000,8000,9000]; - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "value").getTime() === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "value"}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortDateDescending", - runTest: function(datastore, t){ - // summary: - // Function to test sorting date in descending order. - // description: - // Function to test sorting date in descending order. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value: new Date(0)}, - {uniqueId: 1, value: new Date(100)}, - {uniqueId: 2, value:new Date(1000)}, - {uniqueId: 3, value:new Date(2000)}, - {uniqueId: 4, value:new Date(3000)}, - {uniqueId: 5, value:new Date(4000)}, - {uniqueId: 6, value:new Date(5000)}, - {uniqueId: 7, value:new Date(6000)}, - {uniqueId: 8, value:new Date(7000)}, - {uniqueId: 9, value:new Date(8000)}, - {uniqueId: 10, value:new Date(9000)} - - ] - } - }); - - var d = new doh.Deferred(); - function completed(items,request){ - var orderedArray = [0,100,1000,2000,3000,4000,5000,6000,7000,8000,9000]; - orderedArray = orderedArray.reverse(); - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "value").getTime() === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "value", descending: true}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortMultiple", - runTest: function(datastore, t){ - // summary: - // Function to test sorting on multiple attributes. - // description: - // Function to test sorting on multiple attributes. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, value:"fo|o*b.ar"}, - {uniqueId: 2, value:"ba|r*foo"}, - {uniqueId: 3, value:"boomBam"}, - {uniqueId: 4, value:"bit$Bite"}, - {uniqueId: 5, value:"ouagadogou"}, - {uniqueId: 6, value:"jfq4@#!$!@|f1.$4r14i5u"}, - {uniqueId: 7, value:"BaB{aMa|SaRa***F}oo"}, - {uniqueId: 8, value:"squawl"}, - {uniqueId: 10, value:"seaweed"}, - {uniqueId: 12, value:"seaweed"}, - {uniqueId: 11, value:"zulu"}, - {uniqueId: 9, value:"seaweed"} - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - var orderedArray0 = [7,2,4,3,1,6,5,12,10,9,8,11]; - var orderedArray1 = [ "BaB{aMa|SaRa***F}oo", - "ba|r*foo", - "bit$Bite", - "boomBam", - "fo|o*b.ar", - "jfq4@#!$!@|f1.$4r14i5u", - "ouagadogou", - "seaweed", - "seaweed", - "seaweed", - "squawl", - "zulu" - ]; - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!( (store.getValue(items[i], "uniqueId") === orderedArray0[i])&& - (store.getValue(items[i], "value") === orderedArray1[i])) - ){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request){ - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{ attribute: "value"}, { attribute: "uniqueId", descending: true}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortMultipleSpecialComparator", - runTest: function(datastore, t){ - // summary: - // Function to test sorting on multiple attributes with a custom comparator. - // description: - // Function to test sorting on multiple attributes with a custom comparator. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 1, status:"CLOSED"}, - {uniqueId: 2, status:"OPEN"}, - {uniqueId: 3, status:"PENDING"}, - {uniqueId: 4, status:"BLOCKED"}, - {uniqueId: 5, status:"CLOSED"}, - {uniqueId: 6, status:"OPEN"}, - {uniqueId: 7, status:"PENDING"}, - {uniqueId: 8, status:"PENDING"}, - {uniqueId: 10, status:"BLOCKED"}, - {uniqueId: 12, status:"BLOCKED"}, - {uniqueId: 11, status:"OPEN"}, - {uniqueId: 9, status:"CLOSED"} - ] - } - }); - - - store.comparatorMap = {}; - store.comparatorMap["status"] = function(a,b) { - var ret = 0; - // We want to map these by what the priority of these items are, not by alphabetical. - // So, custom comparator. - var enumMap = { OPEN: 3, BLOCKED: 2, PENDING: 1, CLOSED: 0}; - if (enumMap[a] > enumMap[b]) { - ret = 1; - } - if (enumMap[a] < enumMap[b]) { - ret = -1; - } - return ret; - }; - - var sortAttributes = [{attribute: "status", descending: true}, { attribute: "uniqueId", descending: true}]; - - var d = new doh.Deferred(); - function completed(items, findResult){ - var orderedArray = [11,6,2,12,10,4,8,7,3,9,5,1]; - var passed = true; - for(var i = 0; i < items.length; i++){ - var value = store.getValue(items[i], "value"); - if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(errData, request){ - t.assertTrue(false); - d.errback(errData); - } - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: fetch() sortAlphabeticWithUndefined", - runTest: function(datastore, t){ - // summary: - // Function to test sorting alphabetic ordering. - // description: - // Function to test sorting alphabetic ordering. - - var store = new datastore({data: { identifier: "uniqueId", - items: [ {uniqueId: 0, value:"abc"}, - {uniqueId: 1, value:"bca"}, - {uniqueId: 2, value:"abcd"}, - {uniqueId: 3, value:"abcdefg"}, - {uniqueId: 4, value:"lmnop"}, - {uniqueId: 5, value:"foghorn"}, - {uniqueId: 6, value:"qberty"}, - {uniqueId: 7, value:"qwerty"}, - {uniqueId: 8 }, //Deliberate undefined value - {uniqueId: 9, value:"seaweed"}, - {uniqueId: 10, value:"123abc"} - - ] - } - }); - - var d = new doh.Deferred(); - function completed(items, request){ - //Output should be in this order... - var orderedArray = [10,0,2,3,1,5,4,6,7,9,8]; - t.assertEqual(items.length, 11); - var passed = true; - for(var i = 0; i < items.length; i++){ - if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ - passed=false; - break; - } - } - t.assertTrue(passed); - if (passed){ - d.callback(true); - }else{ - d.errback(new Error("Unexpected sorting order found, sort failure.")); - } - } - - function error(error, request) { - t.assertTrue(false); - d.errback(error); - } - - var sortAttributes = [{attribute: "value"}]; - store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); - return d; - } - }, - { - name: "Read API: errorCondition_idCollision_inMemory", - runTest: function(datastore, t){ - // summary: - // Simple test of the errors thrown when there is an id collision in the data. - // Added because of tracker: #2546 - // description: - // Simple test of the errors thrown when there is an id collision in the data. - // Added because of tracker: #2546 - - var store = new datastore({ data: { identifier: "uniqueId", - items: [{uniqueId: 12345, value:"foo"}, - {uniqueId: 123456, value:"bar"}, - {uniqueId: 12345, value:"boom"}, - {uniqueId: 123457, value:"bit"} - ] - } - }); - var d = new doh.Deferred(); - function onComplete(items, request){ - //This is bad if this fires, this case should fail and not call onComplete. - t.assertTrue(false); - d.callback(false); - } - - function reportError(errData, request){ - //This is good if this fires, it is expected. - t.assertTrue(true); - d.callback(true); - } - store.fetch({onComplete: onComplete, onError: reportError}); - return d; - } - }, - { - name: "Read API: errorCondition_idCollision_xhr", - runTest: function(datastore, t){ - // summary: - // Simple test of the errors thrown when there is an id collision in the data. - // Added because of tracker: #2546 - // description: - // Simple test of the errors thrown when there is an id collision in the data. - // Added because of tracker: #2546 - - if(dojo.isBrowser){ - var store = new datastore({url: dojo.moduleUrl("tests", "data/countries_idcollision.json").toString() }); - var d = new doh.Deferred(); - function onComplete(items, request){ - //This is bad if this fires, this case should fail and not call onComplete. - t.assertTrue(false); - d.callback(false); - } - - function reportError(errData, request){ - //This is good if this fires, it is expected. - t.assertTrue(true); - d.callback(true); - } - store.fetch({onComplete: onComplete, onError: reportError}); - return d; - } - } - }, - { - name: "Read API: Date_datatype", - runTest: function(datastore, t){ - //var store = new datastore(tests.data.readOnlyItemFileTestTemplates.testFile["countries_withDates"]); - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withDates")); - - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var independenceDate = store.getValue(item, "independence"); - t.assertTrue(independenceDate instanceof Date); - //Check to see if the value was deserialized properly. Since the store stores in UTC/GMT, it - //should also be compared in the UTC/GMT mode - t.assertTrue(dojo.date.stamp.toISOString(independenceDate, {zulu:true}) === "1993-05-24T00:00:00Z"); - d.callback(true); - } - function onError(errData){ - t.assertTrue(false); - d.errback(errData); - } - store.fetchItemByIdentity({identity:"er", onItem:onItem, onError:onError}); - return d; // Deferred - } - }, - { - name: "Read API: custom_datatype_Color_SimpleMapping", - runTest: function(datastore, t){ - // summary: - // Function to test using literal values with custom datatypes - var dataset = { - identifier:'name', - items: [ - { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, - { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } - ] - }; - var store = new datastore({ - data:dataset, - typeMap:{'Color': dojo.Color} - }); - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var beaker = item; - var hairColor = store.getValue(beaker, "hairColor"); - t.assertTrue(hairColor instanceof dojo.Color); - t.assertTrue(hairColor.toHex() == "#ff0000"); - d.callback(true); - } - function onError(errData){ - d.errback(errData); - } - store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); - return d; // Deferred - } - }, - { - name: "Read API: custom_datatype_Color_GeneralMapping", - runTest: function(datastore, t){ - // summary: - // Function to test using literal values with custom datatypes - var dataset = { - identifier:'name', - items: [ - { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, - { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } - ] - }; - var store = new datastore({ - data:dataset, - typeMap:{'Color': { - type: dojo.Color, - deserialize: function(value){ - return new dojo.Color(value); - } - } - } - }); - var d = new doh.Deferred(); - function onItem(item){ - t.assertTrue(item !== null); - var beaker = item; - var hairColor = store.getValue(beaker, "hairColor"); - t.assertTrue(hairColor instanceof dojo.Color); - t.assertTrue(hairColor.toHex() == "#ff0000"); - d.callback(true); - } - function onError(errData){ - d.errback(errData); - } - store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); - return d; // Deferred - } - }, - { - name: "Read API: hierarchical_data", - runTest: function(datastore, t){ - //var store = new datastore(tests.data.readOnlyItemFileTestTemplates.testFile["geography_hierarchy_small"]); - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); - var d = new doh.Deferred(); - function onComplete(items, request){ - t.assertEqual(items.length, 1); - var northAmerica = items[0]; - var canada = store.getValue(northAmerica, "countries"); - var toronto = store.getValue(canada, "cities"); - t.assertEqual(store.getValue(canada, "name"), "Canada"); - t.assertEqual(store.getValue(toronto, "name"), "Toronto"); - d.callback(true); - } - function onError(errData){ - d.errback(errData); - } - store.fetch({ - query: {name: "North America"}, - onComplete: onComplete, - onError: onError - }); - - return d; // Deferred - } - }, - { - name: "Identity API: no_identifier_specified", - runTest: function(datastore, t){ - var arrayOfItems = [ - {name:"Kermit", color:"green"}, - {name:"Miss Piggy", likes:"Kermit"}, - {name:"Beaker", hairColor:"red"} - ]; - var store = new datastore({data:{items:arrayOfItems}}); - var d = new doh.Deferred(); - function onComplete(items, request){ - var features = store.getFeatures(); - var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); - t.assertTrue(hasIdentityFeature); - for(var i = 0; i < items.length; ++i){ - var item = items[i]; - var identifier = store.getIdentityAttributes(item); - t.assertTrue(identifier === null); - var identity = store.getIdentity(item); - t.assertTrue(typeof identity == "number"); - } - d.callback(true); - } - function reportError(errData, request){ - d.errback(true); - } - store.fetch({onComplete: onComplete, onError: reportError}); - return d; // Deferred - } - }, - { - name: "Identity API: hierarchical_data", - runTest: function(datastore, t){ - var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); - var d = new doh.Deferred(); - function onComplete(items, request){ - var features = store.getFeatures(); - var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); - t.assertTrue(hasIdentityFeature); - for(var i = 0; i < items.length; ++i){ - var item = items[i]; - var identifier = store.getIdentityAttributes(item); - t.assertTrue(identifier === null); - var identity = store.getIdentity(item); - t.assertTrue(typeof identity == "number"); - } - d.callback(true); - } - function reportError(errData, request){ - d.errback(true); - } - store.fetch({onComplete: onComplete, onError: reportError}); - return d; // Deferred - } - }, - { - name: "Read API: functionConformance", - runTest: function(datastore, 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 testStore = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - 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 = testStore[i]; - if(!(typeof testStoreMember === "function")){ - passed = false; - break; - } - } - } - } - t.assertTrue(passed); - } - }, - { - name: "Identity API: functionConformance", - runTest: function(datastore, t){ - // summary: - // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. - // description: - // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. - var testStore = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); - var identityApi = new dojo.data.api.Identity(); - var passed = true; - - for(i in identityApi){ - - if(i.toString().charAt(0) !== '_') - { - var member = identityApi[i]; - //Check that all the 'Read' defined functions exist on the test store. - if(typeof member === "function"){ - var testStoreMember = testStore[i]; - if(!(typeof testStoreMember === "function")){ - passed = false; - break; - } - } - } - } - t.assertTrue(passed); - } - } -]; - - -} diff --git a/includes/js/dojo/tests/data/reference_integrity.json b/includes/js/dojo/tests/data/reference_integrity.json deleted file mode 100644 index bdc6767..0000000 --- a/includes/js/dojo/tests/data/reference_integrity.json +++ /dev/null @@ -1,27 +0,0 @@ -/* -{ - "identifier": "id", - "label": "name", - "items":[ - {"id": 1, "name": "Item 1"}, - {"id": 2, "name": "Item 2"}, - {"id": 3, "name": "Item 3"}, - {"id": 4, "name": "Item 4"}, - {"id": 5, "name": "Item 5"}, - {"id": 6, "name": "Item 6"}, - {"id": 7, "name": "Item 7"}, - {"id": 8, "name": "Item 8"}, - {"id": 9, "name": "Item 9"}, - {"id": 10, "name": "Item 10", "friends": [{"_reference": 1},{"_reference": 3},{"_reference": 5}]}, - {"id": 11, "name": "Item 11", "friends": [{"_reference": 10}], "siblings": [{"_reference": 10}]}, - {"id": 12, "name": "Item 12", "friends": [{"_reference": 3},{"_reference": 7}], "enemies": [{"_reference": 10}]}, - {"id": 13, "name": "Item 13", "friends": [{"_reference": 10}]}, - {"id": 14, "name": "Item 14", "friends": [{"_reference": 11}]}, - {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} - ] -} -*/ - - - - diff --git a/includes/js/dojo/tests/data/runTests.html b/includes/js/dojo/tests/data/runTests.html deleted file mode 100644 index ee3d473..0000000 --- a/includes/js/dojo/tests/data/runTests.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<html> - <head> - <title>dojo.data D.O.H. Unit Test Runner</title> - <meta http-equiv="REFRESH" content="0;url=../../../util/doh/runner.html?testModule=tests.data"></HEAD> - <BODY> - Redirecting to D.O.H runner. - </BODY> -</HTML> diff --git a/includes/js/dojo/tests/data/utils.js b/includes/js/dojo/tests/data/utils.js deleted file mode 100644 index 8b26037..0000000 --- a/includes/js/dojo/tests/data/utils.js +++ /dev/null @@ -1,203 +0,0 @@ -if(!dojo._hasResource["tests.data.utils"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["tests.data.utils"] = true; -dojo.provide("tests.data.utils"); -dojo.require("dojo.data.util.filter"); -dojo.require("dojo.data.util.sorter"); - -tests.register("tests.data.utils", - [ - function testWildcardFilter_1(t){ - var pattern = "ca*"; - var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testWildcardFilter_2(t){ - var pattern = "*ca"; - var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testWildcardFilter_3(t){ - var pattern = "*ca*"; - var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testWildcardFilter_4(t){ - //Try and match <anything>c<anything>a*b - var pattern = "*c*a\\*b*"; - var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testWildcardFilter_5(t){ - var pattern = "*c*a\\\\*b"; - var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testWildcardFilter_caseInsensitive(t){ - var pattern = "ca*"; - var values = ["CA", "california", "Macca", "Macca*b", "Macca\\b"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); - }, - function testSingleChar_1(t){ - var pattern = "bob?le"; - var values = ["bobble", "boble", "foo", "bobBle", "bar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testSingleChar_2(t){ - var pattern = "?ob?le"; - var values = ["bobble", "cob1le", "foo", "bobBle", "bar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testBracketChar(t){ - //Make sure we don't treat this as regexp - var pattern = "*[*]*"; - var values = ["bo[b]ble", "cob1le", "foo", "[bobBle]", "b[]ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testBraceChar(t){ - //Make sure we don't treat this as regexp - var pattern = "*{*}*"; - var values = ["bo{b}ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testParenChar(t){ - //Make sure we don't treat this as regexp - var pattern = "*(*)*"; - var values = ["bo(b)ble", "cob1le", "foo", "{bobBle}", "b()ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testPlusChar(t){ - //Make sure we don't treat this as regexp, so match anything with a + in it. - var pattern = "*+*"; - var values = ["bo+ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testPeriodChar(t){ - //Make sure we don't treat this as regexp, so match anything with a period - var pattern = "*.*"; - var values = ["bo.ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testBarChar(t){ - //Make sure we don't treat this as regexp, so match anything with a pipe bar - var pattern = "*|*"; - var values = ["bo.ble", "cob|le", "foo", "{bobBle}", "b{}ar"]; - - t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testDollarSignChar(t){ - //Make sure we don't treat this as regexp, so match anything with a $ in it - var pattern = "*$*"; - var values = ["bo$ble", "cob$le", "foo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testCarrotChar(t){ - //Make sure we don't treat this as regexp, so match anything with a ^ in it - var pattern = "*^*"; - var values = ["bo$ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; - - t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testEscapeChar(t){ - //Make sure we escape properly, so match this single word. - var pattern = "bob\*ble"; - var values = ["bob*ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - }, - function testAbsoluteMatch(t){ - var pattern = "bobble"; - var values = ["bobble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; - - t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); - } - ] -); - - -} |