From e44a7e37b6c7b5961adaffc62b9042b8d442938e Mon Sep 17 00:00:00 2001
From: mensonge
Date: Thu, 13 Nov 2008 09:49:11 +0000
Subject: New feature: basic Ajax suggestion for tags and implementation of
Dojo toolkit
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f
---
includes/js/dojox/data/tests/stores/OpmlStore.js | 1075 ++++++++++++++++++++++
1 file changed, 1075 insertions(+)
create mode 100644 includes/js/dojox/data/tests/stores/OpmlStore.js
(limited to 'includes/js/dojox/data/tests/stores/OpmlStore.js')
diff --git a/includes/js/dojox/data/tests/stores/OpmlStore.js b/includes/js/dojox/data/tests/stores/OpmlStore.js
new file mode 100644
index 0000000..4fe7be4
--- /dev/null
+++ b/includes/js/dojox/data/tests/stores/OpmlStore.js
@@ -0,0 +1,1075 @@
+if(!dojo._hasResource["dojox.data.tests.stores.OpmlStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.data.tests.stores.OpmlStore"] = true;
+dojo.provide("dojox.data.tests.stores.OpmlStore");
+dojo.require("dojox.data.OpmlStore");
+dojo.require("dojo.data.api.Read");
+
+dojox.data.tests.stores.OpmlStore.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/geography.xml":
+ var opmlData = "";
+ opmlData += '\n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' geography.opml\n';
+ opmlData += ' 2006-11-10\n';
+ opmlData += ' 2006-11-13\n';
+ opmlData += ' Magellan, Ferdinand\n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ break;
+ case "stores/geography_withspeciallabel.xml":
+ var opmlData = "";
+ opmlData += '\n';
+ opmlData += '\n';
+ opmlData += ' \n';
+ opmlData += ' geography.opml\n';
+ opmlData += ' 2006-11-10\n';
+ opmlData += ' 2006-11-13\n';
+ opmlData += ' Magellan, Ferdinand\n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += ' \n';
+ opmlData += '\n';
+ break;
+ }
+ dataSource.data = opmlData;
+ }
+ return dataSource; //Object
+}
+
+dojox.data.tests.stores.OpmlStore.verifyItems = function(opmlStore, 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(!(opmlStore.getValue(items[i], attribute) === compareArray[i])){
+ return false; //Boolean
+ }
+ }
+ return true; //Boolean
+}
+
+dojox.data.tests.stores.OpmlStore.error = function(t, d, errData){
+ // summary:
+ // The error callback function to be used for all of the tests.
+ d.errback(errData);
+}
+
+doh.register("dojox.data.tests.stores.OpmlStore",
+ [
+ function testReadAPI_fetch_all(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore.
+ // description:
+ // Simple test of a basic fetch on OpmlStore.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function completedAll(items){
+ t.is(6, items.length);
+ d.callback(true);
+ }
+
+ //Get everything...
+ opmlStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)});
+ return d; //Object
+ },
+ function testReadAPI_fetch_one(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore of a single item.
+ // description:
+ // Simple test of a basic fetch on OpmlStore of a single item.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.is(1, items.length);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+ return d; //Object
+ },
+
+ function testReadAPI_fetch_one_Multiple(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore of a single item.
+ // description:
+ // Simple test of a basic fetch on OpmlStore of a single item.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(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);
+ }
+ }
+
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onCompleteOne,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+
+ opmlStore.fetch({ query: {text: "North America"},
+ onComplete: onCompleteTwo,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+
+ return d; //Object
+ },
+
+ function testReadAPI_fetch_one_MultipleMixed(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore of a single item mixing two fetch types.
+ // description:
+ // Simple test of a basic fetch on Cpmltore of a single item mixing two fetch types.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+
+ var done = [false, false];
+ function onComplete(items, request){
+ done[0] = true;
+ t.is(1, items.length);
+ console.log("Found item: " + opmlStore.getValue(items[0],"text") + " with identity: " + opmlStore.getIdentity(items[0]));
+ t.is(0, opmlStore.getIdentity(items[0]));
+ if(done[0] && done[1]){
+ d.callback(true);
+ }
+ }
+
+ function onItem(item){
+ done[1] = true;
+ t.assertTrue(item !== null);
+ console.log("Found item: " + opmlStore.getValue(item,"text"));
+ t.is('Egypt', opmlStore.getValue(item,"text")); //Should be the second node parsed, ergo id 1, first node is id 0.
+ t.is(1, opmlStore.getIdentity(item));
+ if(done[0] && done[1]){
+ d.callback(true);
+ }
+ }
+
+ opmlStore.fetch({ query: {text: "Africa"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+
+ opmlStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)});
+
+ return d; //Object
+ },
+
+ function testReadAPI_fetch_one_deep(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item.
+ // description:
+ // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.is(1, items.length);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Mexico City"},
+ queryOptions: {deep:true},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+ return d; //Object
+ },
+
+ function testReadAPI_fetch_one_deep_off(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item.
+ // description:
+ // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ //Nothing should be found.
+ t.is(0, items.length);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Mexico City"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+ return d; //Object
+ },
+
+ function testReadAPI_fetch_all_streaming(t){
+ // summary:
+ // Simple test of a basic fetch on OpmlStore.
+ // description:
+ // Simple test of a basic fetch on OpmlStore.
+
+ var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ count = 0;
+
+ function onBegin(size, requestObj){
+ t.is(6, size);
+ }
+ function onItem(item, requestObj){
+ t.assertTrue(opmlStore.isItem(item));
+ count++;
+ }
+ function onComplete(items, request){
+ t.is(6, count);
+ t.is(null, items);
+ d.callback(true);
+ }
+
+ //Get everything...
+ opmlStore.fetch({ onBegin: onBegin,
+ onItem: onItem,
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.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.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function dumpFirstFetch(items, request){
+ t.is(5, items.length);
+ request.start = 3;
+ request.count = 1;
+ request.onComplete = dumpSecondFetch;
+ opmlStore.fetch(request);
+ }
+
+ function dumpSecondFetch(items, request){
+ t.is(1, items.length);
+ request.start = 0;
+ request.count = 5;
+ request.onComplete = dumpThirdFetch;
+ opmlStore.fetch(request);
+ }
+
+ function dumpThirdFetch(items, request){
+ t.is(5, items.length);
+ request.start = 2;
+ request.count = 20;
+ request.onComplete = dumpFourthFetch;
+ opmlStore.fetch(request);
+ }
+
+ function dumpFourthFetch(items, request){
+ t.is(4, items.length);
+ request.start = 9;
+ request.count = 100;
+ request.onComplete = dumpFifthFetch;
+ opmlStore.fetch(request);
+ }
+
+ function dumpFifthFetch(items, request){
+ t.is(0, items.length);
+ request.start = 2;
+ request.count = 20;
+ request.onComplete = dumpSixthFetch;
+ opmlStore.fetch(request);
+ }
+
+ function dumpSixthFetch(items, request){
+ t.is(4, items.length);
+ d.callback(true);
+ }
+
+ function completed(items, request){
+ t.is(6, items.length);
+ request.start = 1;
+ request.count = 5;
+ request.onComplete = dumpFirstFetch;
+ opmlStore.fetch(request);
+ }
+
+ opmlStore.fetch({onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.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.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.assertEqual(items.length, 1);
+ var label = opmlStore.getLabel(items[0]);
+ t.assertTrue(label !== null);
+ t.assertEqual("Asia", label);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.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.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.assertEqual(items.length, 1);
+ var labelList = opmlStore.getLabelAttributes(items[0]);
+ t.assertTrue(dojo.isArray(labelList));
+ t.assertEqual("text", labelList[0]);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+ return d;
+ },
+
+ function testReadAPI_getLabel_nondefault(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.OpmlStore.getDatasource("stores/geography_withspeciallabel.xml");
+ args.label="label";
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.assertEqual(items.length, 1);
+ var label = opmlStore.getLabel(items[0]);
+ t.assertTrue(label !== null);
+ t.assertEqual("Continent/Asia", label);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)
+ });
+ return d;
+ },
+ function testReadAPI_getLabelAttributes_nondefault(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.OpmlStore.getDatasource("stores/geography_withspeciallabel.xml");
+ args.label="label";
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function onComplete(items, request){
+ t.assertEqual(items.length, 1);
+ var labelList = opmlStore.getLabelAttributes(items[0]);
+ t.assertTrue(dojo.isArray(labelList));
+ t.assertEqual("label", labelList[0]);
+ d.callback(true);
+ }
+ opmlStore.fetch({ query: {text: "Asia"},
+ onComplete: onComplete,
+ onError: dojo.partial(dojox.data.tests.stores.OpmlStore.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.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function completedAll(items){
+ t.is(6, items.length);
+
+ t.is("Africa", opmlStore.getValue(items[0],"text"));
+ t.is("Asia", opmlStore.getValue(items[1],"text"));
+ t.is("Australia", opmlStore.getValue(items[2],"text"));
+ t.is("Europe", opmlStore.getValue(items[3],"text"));
+ t.is("North America", opmlStore.getValue(items[4],"text"));
+ t.is("South America", opmlStore.getValue(items[5],"text"));
+
+ t.is("continent", opmlStore.getValue(items[1],"type"));
+ t.is("21 million", opmlStore.getValue(items[2],"population"));
+
+ var firstChild = opmlStore.getValue(items[4],"children");
+ t.assertTrue(opmlStore.isItem(firstChild));
+ t.is("Mexico", opmlStore.getValue(firstChild,"text"));
+ t.is("country", opmlStore.getValue(firstChild,"type"));
+ t.is("108 million", opmlStore.getValue(firstChild,"population"));
+ t.is("1,972,550 sq km", opmlStore.getValue(firstChild,"area"));
+
+ firstChild = opmlStore.getValue(firstChild,"children");
+ t.assertTrue(opmlStore.isItem(firstChild));
+ t.is("Mexico City", opmlStore.getValue(firstChild,"text"));
+ t.is("city", opmlStore.getValue(firstChild,"type"));
+ t.is("19 million", opmlStore.getValue(firstChild,"population"));
+ t.is("-6 UTC", opmlStore.getValue(firstChild,"timezone"));
+
+ d.callback(true);
+ }
+
+ //Get everything...
+ opmlStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)});
+ return d; //Object
+ },
+ 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.OpmlStore.getDatasource("stores/geography.xml");
+ var opmlStore = new dojox.data.OpmlStore(args);
+
+ var d = new doh.Deferred();
+ function completed(items){
+ t.is(1, items.length);
+
+ var children = opmlStore.getValues(items[0],"children");
+ t.is(3, children.length);
+ for(var i=0; i