📄 readonlyitemfiletesttemplates.js
字号:
// 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(northA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -