12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439 |
- if (!dojo._hasResource["dojox.data.tests.stores.CsvStore"]) { // _hasResource
- // checks added
- // by build. Do
- // not use
- // _hasResource
- // directly in
- // your code.
- dojo._hasResource["dojox.data.tests.stores.CsvStore"] = true;
- dojo.provide("dojox.data.tests.stores.CsvStore");
- dojo.require("dojox.data.CsvStore");
- dojo.require("dojo.data.api.Read");
- dojo.require("dojo.data.api.Identity");
- dojox.data.tests.stores.CsvStore.getDatasource = function(filepath) {
- // summary:
- // A simple helper function for getting the sample data used in each of
- // the tests.
- // description:
- // A simple helper function for getting the sample data used in each of
- // the tests.
- var dataSource = {};
- if (dojo.isBrowser) {
- dataSource.url = dojo.moduleUrl("dojox.data.tests", filepath)
- .toString();
- } else {
- // When running tests in Rhino, xhrGet is not available,
- // so we have the file data in the code below.
- switch (filepath) {
- case "stores/movies.csv" :
- var csvData = "";
- csvData += "Title, Year, Producer\n";
- csvData += "City of God, 2002, Katia Lund\n";
- csvData += "Rain,, Christine Jeffs\n";
- csvData += "2001: A Space Odyssey, 1968, Stanley Kubrick\n";
- csvData += '"This is a ""fake"" movie title", 1957, Sidney Lumet\n';
- csvData += "Alien, 1979 , Ridley Scott\n";
- csvData += '"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott\n';
- csvData += '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n';
- break;
- case "stores/movies2.csv" :
- var csvData = "";
- csvData += "Title, Year, Producer\n";
- csvData += "City of God, 2002, Katia Lund\n";
- csvData += "Rain,\"\", Christine Jeffs\n";
- csvData += "2001: A Space Odyssey, 1968, Stanley Kubrick\n";
- csvData += '"This is a ""fake"" movie title", 1957, Sidney Lumet\n';
- csvData += "Alien, 1979 , Ridley Scott\n";
- csvData += '"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott\n';
- csvData += '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n';
- break;
- case "stores/books.csv" :
- var csvData = "";
- csvData += "Title, Author\n";
- csvData += "The Transparent Society, David Brin\n";
- csvData += "The First Measured Century, Theodore Caplow\n";
- csvData += "Maps in a Mirror, Orson Scott Card\n";
- csvData += "Princess Smartypants, Babette Cole\n";
- csvData += "Carfree Cities, Crawford J.H.\n";
- csvData += "Down and Out in the Magic Kingdom, Cory Doctorow\n";
- csvData += "Tax Shift, Alan Thein Durning\n";
- csvData += "The Sneetches and other stories, Dr. Seuss\n";
- csvData += "News from Tartary, Peter Fleming\n";
- break;
- case "stores/patterns.csv" :
- var csvData = "";
- csvData += "uniqueId, value\n";
- csvData += "9, jfq4@#!$!@Rf14r14i5u\n";
- csvData += "6, BaBaMaSaRa***Foo\n";
- csvData += "2, bar*foo\n";
- csvData += "8, 123abc\n";
- csvData += "4, bit$Bite\n";
- csvData += "3, 123abc\n";
- csvData += "10, 123abcdefg\n";
- csvData += "1, foo*bar\n";
- csvData += "7, \n";
- csvData += "5, 123abc\n"
- break;
- }
- dataSource.data = csvData;
- }
- return dataSource; // Object
- }
- dojox.data.tests.stores.CsvStore.verifyItems = function(csvStore, items,
- attribute, compareArray) {
- // summary:
- // A helper function for validating that the items array is ordered
- // the same as the compareArray
- if (items.length != compareArray.length) {
- return false;
- }
- for (var i = 0; i < items.length; i++) {
- if (!(csvStore.getValue(items[i], attribute) === compareArray[i])) {
- return false; // Boolean
- }
- }
- return true; // Boolean
- }
- dojox.data.tests.stores.CsvStore.error = function(t, d, errData) {
- // summary:
- // The error callback function to be used for all of the tests.
- for (i in errData) {
- console.log(errData[i]);
- }
- d.errback(errData);
- }
- doh.register("dojox.data.tests.stores.CsvStore", [
- function testReadAPI_fetch_all(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore.
- // description:
- // Simple test of a basic fetch on CsvStore.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completedAll(items) {
- t.assertTrue((items.length === 7));
- d.callback(true);
- }
- // Get everything...
- csvStore.fetch({
- onComplete : completedAll,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_all_withEmptyStringField(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore.
- // description:
- // Simple test of a basic fetch on CsvStore.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies2.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completedAll(items) {
- t.assertTrue((items.length === 7));
- d.callback(true);
- }
- // Get everything...
- csvStore.fetch({
- onComplete : completedAll,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_one(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore of a single item.
- // description:
- // Simple test of a basic fetch on CsvStore of a single item.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onComplete(items, request) {
- t.is(1, items.length);
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- Title : "*Sequel*"
- },
- onComplete : onComplete,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_Multiple(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore of a single item.
- // description:
- // Simple test of a basic fetch on CsvStore of a single item.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- var done = [false, false];
- function onCompleteOne(items, request) {
- done[0] = true;
- t.is(1, items.length);
- if (done[0] && done[1]) {
- d.callback(true);
- }
- }
- function onCompleteTwo(items, request) {
- done[1] = true;
- t.is(1, items.length);
- if (done[0] && done[1]) {
- d.callback(true);
- }
- }
- try {
- csvStore.fetch({
- query : {
- Title : "*Sequel*"
- },
- onComplete : onCompleteOne,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error,
- t, d)
- });
- csvStore.fetch({
- query : {
- Title : "2001:*"
- },
- onComplete : onCompleteTwo,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error,
- t, d)
- });
- } catch (e) {
- for (i in e) {
- console.log(e[i]);
- }
- }
- return d; // Object
- }, function testReadAPI_fetch_MultipleMixed(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore of a single item.
- // description:
- // Simple test of a basic fetch on CsvStore of a single item.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- var done = [false, false];
- function onComplete(items, request) {
- done[0] = true;
- t.is(1, items.length);
- if (done[0] && done[1]) {
- d.callback(true);
- }
- }
- function onItem(item) {
- done[1] = true;
- t.assertTrue(item !== null);
- t.is('Dymtryk "the King", Edward', csvStore.getValue(item,
- "Producer"));
- t.is('Caine Mutiny, The', csvStore.getValue(item, "Title"));
- if (done[0] && done[1]) {
- d.callback(true);
- }
- }
- csvStore.fetch({
- query : {
- Title : "*Sequel*"
- },
- onComplete : onComplete,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- csvStore.fetchItemByIdentity({
- identity : "6",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_all_streaming(t) {
- // summary:
- // Simple test of a basic fetch on CsvStore.
- // description:
- // Simple test of a basic fetch on CsvStore.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- count = 0;
- function onBegin(size, requestObj) {
- t.assertTrue(size === 7);
- }
- function onItem(item, requestObj) {
- t.assertTrue(csvStore.isItem(item));
- count++;
- }
- function onComplete(items, request) {
- t.is(7, count);
- t.is(null, items);
- d.callback(true);
- }
- // Get everything...
- csvStore.fetch({
- onBegin : onBegin,
- onItem : onItem,
- onComplete : onComplete,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_paging(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function dumpFirstFetch(items, request) {
- t.is(5, items.length);
- request.start = 3;
- request.count = 1;
- request.onComplete = dumpSecondFetch;
- csvStore.fetch(request);
- }
- function dumpSecondFetch(items, request) {
- t.is(1, items.length);
- request.start = 0;
- request.count = 5;
- request.onComplete = dumpThirdFetch;
- csvStore.fetch(request);
- }
- function dumpThirdFetch(items, request) {
- t.is(5, items.length);
- request.start = 2;
- request.count = 20;
- request.onComplete = dumpFourthFetch;
- csvStore.fetch(request);
- }
- function dumpFourthFetch(items, request) {
- t.is(5, items.length);
- request.start = 9;
- request.count = 100;
- request.onComplete = dumpFifthFetch;
- csvStore.fetch(request);
- }
- function dumpFifthFetch(items, request) {
- t.is(0, items.length);
- request.start = 2;
- request.count = 20;
- request.onComplete = dumpSixthFetch;
- csvStore.fetch(request);
- }
- function dumpSixthFetch(items, request) {
- t.is(5, items.length);
- d.callback(true);
- }
- function completed(items, request) {
- t.is(7, items.length);
- request.start = 1;
- request.count = 5;
- request.onComplete = dumpFirstFetch;
- csvStore.fetch(request);
- }
- csvStore.fetch({
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- },
- function testReadAPI_getLabel(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- args.label = "Title";
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onComplete(items, request) {
- t.assertEqual(items.length, 1);
- var label = csvStore.getLabel(items[0]);
- t.assertTrue(label !== null);
- t.assertEqual("The Sequel to \"Dances With Wolves.\"",
- label);
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- Title : "*Sequel*"
- },
- onComplete : onComplete,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getLabelAttributes(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- args.label = "Title";
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onComplete(items, request) {
- t.assertEqual(items.length, 1);
- var labelList = csvStore.getLabelAttributes(items[0]);
- t.assertTrue(dojo.isArray(labelList));
- t.assertEqual("Title", labelList[0]);
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- Title : "*Sequel*"
- },
- onComplete : onComplete,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getValue(t) {
- // summary:
- // Simple test of the getValue function of the store.
- // description:
- // Simple test of the getValue function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.is('Dymtryk "the King", Edward', csvStore.getValue(item,
- "Producer"));
- t.is('Caine Mutiny, The', csvStore.getValue(item, "Title"));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "6",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getValue_2(t) {
- // summary:
- // Simple test of the getValue function of the store.
- // description:
- // Simple test of the getValue function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.is("City of God", csvStore.getValue(item, "Title"));
- t.is("2002", csvStore.getValue(item, "Year"));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "0",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getValue_3(t) {
- // summary:
- // Simple test of the getValue function of the store.
- // description:
- // Simple test of the getValue function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.is("1979", csvStore.getValue(item, "Year"));
- t.is("Alien", csvStore.getValue(item, "Title"));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "4",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getValue_4(t) {
- // summary:
- // Simple test of the getValue function of the store.
- // description:
- // Simple test of the getValue function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.is("2001: A Space Odyssey", csvStore.getValue(item,
- "Title"));
- t
- .is("Stanley Kubrick", csvStore.getValue(item,
- "Producer"));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "2",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- },
- function testReadAPI_getValues(t) {
- // summary:
- // Simple test of the getValues function of the store.
- // description:
- // Simple test of the getValues function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- var names = csvStore.getValues(item, "Title");
- t.assertTrue(dojo.isArray(names));
- t.is(1, names.length);
- t.is("Rain", names[0]);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testIdentityAPI_fetchItemByIdentity(t) {
- // summary:
- // Simple test of the fetchItemByIdentity function of the store.
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- },
- function testIdentityAPI_fetchItemByIdentity_bad1(t) {
- // summary:
- // Simple test of the fetchItemByIdentity function of the store.
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item === null);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "7",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testIdentityAPI_fetchItemByIdentity_bad2(t) {
- // summary:
- // Simple test of the fetchItemByIdentity function of the store.
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item === null);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "-1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testIdentityAPI_fetchItemByIdentity_bad3(t) {
- // summary:
- // Simple test of the fetchItemByIdentity function of the store.
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item === null);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "999999",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testIdentityAPI_getIdentity(t) {
- // summary:
- // Simple test of the fetchItemByIdentity function of the store.
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(7, items.length);
- var passed = true;
- for (var i = 0; i < items.length; i++) {
- if (!(csvStore.getIdentity(items[i]) === i)) {
- passed = false;
- break;
- }
- }
- t.assertTrue(passed);
- d.callback(true);
- }
- // Get everything...
- csvStore.fetch({
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testIdentityAPI_getIdentityAttributes(t) {
- // summary:
- // Simple test of the getIdentityAttributes
- // description:
- // Simple test of the fetchItemByIdentity function of the store.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(csvStore.isItem(item));
- t.assertEqual(null, csvStore.getIdentityAttributes(item));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_isItem(t) {
- // summary:
- // Simple test of the isItem function of the store
- // description:
- // Simple test of the isItem function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(csvStore.isItem(item));
- t.assertTrue(!csvStore.isItem({}));
- t.assertTrue(!csvStore.isItem({
- item : "not an item"
- }));
- t.assertTrue(!csvStore.isItem("not an item"));
- t.assertTrue(!csvStore.isItem(["not an item"]));
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_hasAttribute(t) {
- // summary:
- // Simple test of the hasAttribute function of the store
- // description:
- // Simple test of the hasAttribute function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.assertTrue(csvStore.hasAttribute(item, "Title"));
- t.assertTrue(csvStore.hasAttribute(item, "Producer"));
- t.assertTrue(!csvStore.hasAttribute(item, "Year"));
- t.assertTrue(!csvStore.hasAttribute(item, "Nothing"));
- t.assertTrue(!csvStore.hasAttribute(item, "title"));
- // Test that null attributes throw an exception
- var passed = false;
- try {
- csvStore.hasAttribute(item, null);
- } catch (e) {
- passed = true;
- }
- t.assertTrue(passed);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_containsValue(t) {
- // summary:
- // Simple test of the containsValue function of the store
- // description:
- // Simple test of the containsValue function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t
- .assertTrue(csvStore.containsValue(item, "Title",
- "Alien"));
- t.assertTrue(csvStore.containsValue(item, "Year", "1979"));
- t.assertTrue(csvStore.containsValue(item, "Producer",
- "Ridley Scott"));
- t.assertTrue(!csvStore.containsValue(item, "Title",
- "Alien2"));
- t.assertTrue(!csvStore.containsValue(item, "Year",
- "1979 "));
- t.assertTrue(!csvStore.containsValue(item, "Title", null));
- // Test that null attributes throw an exception
- var passed = false;
- try {
- csvStore.containsValue(item, null, "foo");
- } catch (e) {
- passed = true;
- }
- t.assertTrue(passed);
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "4",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- }, function testReadAPI_getAttributes(t) {
- // summary:
- // Simple test of the getAttributes function of the store
- // description:
- // Simple test of the getAttributes function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- t.assertTrue(item !== null);
- t.assertTrue(csvStore.isItem(item));
- var attributes = csvStore.getAttributes(item);
- t.is(3, attributes.length);
- for (var i = 0; i < attributes.length; i++) {
- t
- .assertTrue((attributes[i] === "Title"
- || attributes[i] === "Year" || attributes[i] === "Producer"));
- }
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "4",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- },
- function testReadAPI_getAttributes_onlyTwo(t) {
- // summary:
- // Simple test of the getAttributes function of the store
- // description:
- // Simple test of the getAttributes function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function onItem(item) {
- // Test an item that does not have all of the attributes
- t.assertTrue(item !== null);
- t.assertTrue(csvStore.isItem(item));
- var attributes = csvStore.getAttributes(item);
- t.assertTrue(attributes.length === 2);
- t.assertTrue(attributes[0] === "Title");
- t.assertTrue(attributes[1] === "Producer");
- d.callback(true);
- }
- csvStore.fetchItemByIdentity({
- identity : "1",
- onItem : onItem,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d;
- },
- function testReadAPI_getFeatures(t) {
- // summary:
- // Simple test of the getFeatures function of the store
- // description:
- // Simple test of the getFeatures function of the store
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var features = csvStore.getFeatures();
- var count = 0;
- for (i in features) {
- t
- .assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Identity"));
- count++;
- }
- t.assertTrue(count === 2);
- }, function testReadAPI_fetch_patternMatch0(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(2, items.length);
- var valueArray = ["Alien",
- "The Sequel to \"Dances With Wolves.\""];
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "Title", valueArray));
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- Producer : "* Scott"
- },
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_patternMatch1(t) {
- // summary:
- // Function to test pattern matching of everything with $ in it.
- // description:
- // Function to test pattern matching of everything with $ in it.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.assertTrue(items.length === 2);
- var valueArray = ["jfq4@#!$!@Rf14r14i5u", "bit$Bite"];
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "value", valueArray));
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- value : "*$*"
- },
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_patternMatch2(t) {
- // summary:
- // Function to test exact pattern match
- // description:
- // Function to test exact pattern match
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(1, items.length);
- t
- .assertTrue(csvStore.getValue(items[0], "value") === "bar*foo");
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- value : "bar\*foo"
- },
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_patternMatch_caseInsensitive(t) {
- // summary:
- // Function to test exact pattern match with case insensitivity
- // set.
- // description:
- // Function to test exact pattern match with case insensitivity
- // set.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(1, items.length);
- t
- .assertTrue(csvStore.getValue(items[0], "value") === "bar*foo");
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- value : "BAR\\*foo"
- },
- queryOptions : {
- ignoreCase : true
- },
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_patternMatch_caseSensitive(t) {
- // summary:
- // Function to test exact pattern match with case insensitivity
- // set.
- // description:
- // Function to test exact pattern match with case insensitivity
- // set.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(0, items.length);
- d.callback(true);
- }
- csvStore.fetch({
- query : {
- value : "BAR\\*foo"
- },
- queryOptions : {
- ignoreCase : false
- },
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortNumeric(t) {
- // summary:
- // Function to test sorting numerically.
- // description:
- // Function to test sorting numerically.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.assertTrue(items.length === 10);
- // TODO: CsvStore treats everything like a string, so these
- // numbers will be sorted lexicographically.
- var orderedArray = ["1", "10", "2", "3", "4", "5", "6",
- "7", "8", "9"];
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "uniqueId", orderedArray));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "uniqueId"
- }];
- csvStore.fetch({
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d),
- sort : sortAttributes
- });
- return d; // Object
- }, function testReadAPI_fetch_sortNumericDescending(t) {
- // summary:
- // Function to test sorting numerically.
- // description:
- // Function to test sorting numerically.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(10, items.length);
- // TODO: CsvStore treats everything like a string, so these
- // numbers will be sorted lexicographically.
- var orderedArray = ["9", "8", "7", "6", "5", "4", "3", "2",
- "10", "1"];
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "uniqueId", orderedArray));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "uniqueId",
- descending : true
- }];
- csvStore.fetch({
- sort : sortAttributes,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortNumericWithCount(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- t.is(5, items.length);
- // TODO: CsvStore treats everything like a string, so these
- // numbers will be sorted lexicographically.
- var orderedArray = ["9", "8", "7", "6", "5"];
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "uniqueId", orderedArray));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "uniqueId",
- descending : true
- }];
- csvStore.fetch({
- sort : sortAttributes,
- count : 5,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortAlphabetic(t) {
- // summary:
- // Function to test sorting alphabetic ordering.
- // description:
- // Function to test sorting alphabetic ordering.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- // Output should be in this order...
- var orderedArray = ["123abc", "123abc", "123abc",
- "123abcdefg", "BaBaMaSaRa***Foo", "bar*foo",
- "bit$Bite", "foo*bar", "jfq4@#!$!@Rf14r14i5u",
- undefined];
- t.is(10, items.length);
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "value", orderedArray));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "value"
- }];
- csvStore.fetch({
- sort : sortAttributes,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortAlphabeticDescending(t) {
- // summary:
- // Function to test sorting alphabetic ordering in descending
- // mode.
- // description:
- // Function to test sorting alphabetic ordering in descending
- // mode.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- // Output should be in this order...
- var orderedArray = [undefined, "jfq4@#!$!@Rf14r14i5u",
- "foo*bar", "bit$Bite", "bar*foo",
- "BaBaMaSaRa***Foo", "123abcdefg", "123abc",
- "123abc", "123abc"];
- t.is(10, items.length);
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "value", orderedArray));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "value",
- descending : true
- }];
- csvStore.fetch({
- sort : sortAttributes,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortMultiple(t) {
- // summary:
- // Function to test sorting on multiple attributes.
- // description:
- // Function to test sorting on multiple attributes.
- var args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/patterns.csv");
- var csvStore = new dojox.data.CsvStore(args);
- var d = new doh.Deferred();
- function completed(items, request) {
- var orderedArray0 = ["8", "5", "3", "10", "6", "2", "4",
- "1", "9", "7"];
- var orderedArray1 = ["123abc", "123abc", "123abc",
- "123abcdefg", "BaBaMaSaRa***Foo", "bar*foo",
- "bit$Bite", "foo*bar", "jfq4@#!$!@Rf14r14i5u",
- undefined];
- t.is(10, items.length);
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "uniqueId", orderedArray0));
- t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(
- csvStore, items, "value", orderedArray1));
- d.callback(true);
- }
- var sortAttributes = [{
- attribute : "value"
- }, {
- attribute : "uniqueId",
- descending : true
- }];
- csvStore.fetch({
- sort : sortAttributes,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_fetch_sortMultipleSpecialComparator(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 args = dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv");
- var csvStore = new dojox.data.CsvStore(args);
- csvStore.comparatorMap = {};
- csvStore.comparatorMap["Producer"] = function(a, b) {
- var ret = 0;
- // We want to sort authors alphabetical by their last name
- function lastName(name) {
- if (typeof name === "undefined") {
- return undefined;
- }
- var matches = name.match(/\s*(\S+)$/); // Grab the last
- // word in the
- // string.
- return matches ? matches[1] : name; // Strings with only
- // whitespace will
- // not match.
- }
- var lastNameA = lastName(a);
- var lastNameB = lastName(b);
- if (lastNameA > lastNameB
- || typeof lastNameA === "undefined") {
- ret = 1;
- } else if (lastNameA < lastNameB
- || typeof lastNameB === "undefined") {
- ret = -1;
- }
- return ret;
- };
- var sortAttributes = [{
- attribute : "Producer",
- descending : true
- }, {
- attribute : "Title",
- descending : true
- }];
- var d = new doh.Deferred();
- function completed(items, findResult) {
- var orderedArray = [5, 4, 0, 3, 2, 1, 6];
- t.assertTrue(items.length === 7);
- var passed = true;
- for (var i = 0; i < items.length; i++) {
- if (!(csvStore.getIdentity(items[i]) === orderedArray[i])) {
- passed = false;
- break;
- }
- }
- t.assertTrue(passed);
- d.callback(true);
- }
- csvStore.fetch({
- sort : sortAttributes,
- onComplete : completed,
- onError : dojo.partial(
- dojox.data.tests.stores.CsvStore.error, t,
- d)
- });
- return d; // Object
- }, function testReadAPI_functionConformance(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 dojox.data.CsvStore(dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv"));
- 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") {
- console.log("Looking at function: [" + i + "]");
- var testStoreMember = testStore[i];
- if (!(typeof testStoreMember === "function")) {
- console.log("Problem with function: [" + i
- + "]. Got value: " + testStoreMember);
- passed = false;
- break;
- }
- }
- }
- }
- t.assertTrue(passed);
- }, function testIdentityAPI_functionConformance(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 dojox.data.CsvStore(dojox.data.tests.stores.CsvStore
- .getDatasource("stores/movies.csv"));
- 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") {
- console.log("Looking at function: [" + i + "]");
- var testStoreMember = testStore[i];
- if (!(typeof testStoreMember === "function")) {
- passed = false;
- break;
- }
- }
- }
- }
- t.assertTrue(passed);
- }]);
- }
|