datasource.html revision 350839d3f8c71a522972265f77a8b5a3fbf6c82f
199767f8919635c4928607450d9e0abb932109ceToomas Soome<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
199767f8919635c4928607450d9e0abb932109ceToomas Soome<script type="text/javascript" src="/build/yui/yui.js"></script>
199767f8919635c4928607450d9e0abb932109ceToomas Soome<script type="text/javascript" src="/build/datasource/datasource-debug.js"></script>
199767f8919635c4928607450d9e0abb932109ceToomas Soome<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
199767f8919635c4928607450d9e0abb932109ceToomas Soome(function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome //filter: "debug",
199767f8919635c4928607450d9e0abb932109ceToomas Soome logInclude:{"TestRunner":true,"datasource":true},
199767f8919635c4928607450d9e0abb932109ceToomas Soome useConsole: true
199767f8919635c4928607450d9e0abb932109ceToomas Soome }).use("dump", "test", "console", "io-base", "cache", "base", "plugin", "json", "datatype", "dataschema", "datasource", function(Y) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome var ASSERT = Y.Assert,
199767f8919635c4928607450d9e0abb932109ceToomas Soome OBJECTASSERT = Y.ObjectAssert,
199767f8919635c4928607450d9e0abb932109ceToomas Soome BTNRUN = Y.get("#btnRun"),
199767f8919635c4928607450d9e0abb932109ceToomas Soome WAITTIMEOUT = 5000; // On a slow connection set to 5000
199767f8919635c4928607450d9e0abb932109ceToomas Soome // Set up the page
199767f8919635c4928607450d9e0abb932109ceToomas Soome BTNRUN.set("disabled", false);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Y.on("click", function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome var myConsole = new Y.Console().render();
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testClass = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome name: "Class Tests",
199767f8919635c4928607450d9e0abb932109ceToomas Soome testConstructor: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame((ds instanceof Y.Base), true, "Expected DataSource.Base instance.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame((ds instanceof Y.DataSource.Local), true, "Expected DataSource.Local instance.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome testConstructorIO: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome var ds = new Y.DataSource.IO();
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame((ds instanceof Y.Base), true, "Expected Base instance.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame((ds instanceof Y.DataSource.Local), true, "Expected DataSource.Local instance.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame((ds instanceof Y.DataSource.IO), true, "Expected DataSource.IO instance.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testLocal = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome testLocalDefaults: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: ["a","b","c","d"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ARRAYASSERT.itemsAreSame(["a","b","c","d"], e.response.results, "Expected live array.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("IO failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome testLocalEvents: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: ["a","b","c","d"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleRequest",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "request: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "request: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "request: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleData",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "data: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "data: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "data: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.data, "data: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleResponse",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "response: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "response: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "response: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.data, "response: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "response: Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "response: Expected parsed results.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response.meta, "response: Expected parsed meta data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("a", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome testLocalError: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: ["a","b","c","d"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleError",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "error: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "error: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "error: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isUndefined(e.response, "error: Expected undefined response.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.error, "error: Expected error.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.set("source", undefined);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("a", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testIO = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome testIODefaults: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNull(e.request, "Expected null request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome OBJECTASSERT.ownsKeys({tId:null,request:null,data:null,response:null,callback:null}, e, "Expected all properties.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("IO failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testIOPost: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNull(e.request, "Expected null request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome OBJECTASSERT.ownsKeys({tId:null,request:null,data:null,response:null,callback:null}, e, "Expected all properties.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("IO failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "POST",
199767f8919635c4928607450d9e0abb932109ceToomas Soome data: "foo=bar"
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testIOEvents: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "ResultSet.Result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["Title"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleRequest",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "request: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(null, e.request, "request: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "request: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleData",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "data: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(null, e.request, "data: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "data: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "data: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleResponse",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "response: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(null, e.request, "response: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "response: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "response: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "response: Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "response: Expected parsed results.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response.meta, "response: Expected parsed meta data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest(null, "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testIOError: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "ResultSet.Result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["Title"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleError",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "error: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "error: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "error: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "error: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.error, "error: Expected error.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.set("source", "foo");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("a", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testGet = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome testGetDefaults: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: "http://query.yahooapis.com/v1/public/yql?format=json&"
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome OBJECTASSERT.ownsKeys({tId:null,request:null,data:null,response:null,callback:null}, e, "Expected all properties.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", {
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("Get failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testGetEvents: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: "http://query.yahooapis.com/v1/public/yql?format=json&"
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "query.results.result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["title"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleRequest",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "request: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "request: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleData",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "data: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "data: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "data: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleResponse",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "response: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "response: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "response: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "response: Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "response: Expected parsed results.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response.meta, "response: Expected parsed meta data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome // Only FF can detect error state in Get Utility...
199767f8919635c4928607450d9e0abb932109ceToomas Soome testGetError: (Y.UA.gecko) ? function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: "http://query.yahooapis.com/v1/public/yql?format=json&"
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "query.results.result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["title"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleError",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "error: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "error: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "error: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isUndefined(e.data, "error: Expected undefined data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.error, "error: Expected error.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.set("source", "foo");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("a", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome } : function(){}
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testFunction = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome testFunctionDefaults: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome return [{type:"a",age:0,name:"c"},{type:"d",age:1,name:"f"},{type:"g",age:-1,name:"i"}];
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("foo", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome OBJECTASSERT.ownsKeys({tId:null,request:null,data:null,response:null,callback:null}, e, "Expected all properties.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("Function failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testFunctionEvents: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome return [{type:"a",age:0,name:"c"},{type:"d",age:1,name:"f"},{type:"g",age:-1,name:"i"}];
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceArraySchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["type", "name"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleRequest",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "request: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("foo", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "request: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleData",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "data: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("foo", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "data: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "data: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleResponse",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "response: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("foo", e.request, "Expected same request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "response: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.data, "response: Expected raw data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "response: Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "response: Expected parsed results.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response.meta, "response: Expected parsed meta data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("foo", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testFunctionError: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: "foo"
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceArraySchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["type", "name"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleError",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNumber(e.tId, "error: Expected transaction ID.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.request, "error: Expected request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("callback", e.callback, "error: Expected callback.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isUndefined(e.data, "error: Expected undefined data.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.error, "error: Expected error.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.sendRequest("a", "callback");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome var testDataSchemaPlugin = new Y.Test.Case({
199767f8919635c4928607450d9e0abb932109ceToomas Soome name: "DataSource DataSchema Plugin Tests",
199767f8919635c4928607450d9e0abb932109ceToomas Soome testJSONSchema: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceJSONSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "ResultSet.Result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["Title"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNull(e.request, "Expected null request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "Expected results array.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(10, e.response.results.length, "Expected 10 results.")
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNotUndefined(e.response.results[0].Title, "Expected Title property")
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: Y.bind(function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("IO failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testXMLSchema: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceXMLSchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultListLocator: "result",
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: [{key:"title", locator:"*[local-name() ='title']"}]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNull(e.request, "Expected null request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "Expected results array.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(10, e.response.results.length, "Expected 10 results.")
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isString(e.response.results[0].title, "Expected title.")
199767f8919635c4928607450d9e0abb932109ceToomas Soome failure: Y.bind(function(e) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.fail("IO failure case.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome this.wait(function(){Y.Mock.verify(handler);}, WAITTIMEOUT);
199767f8919635c4928607450d9e0abb932109ceToomas Soome testArraySchema: function() {
199767f8919635c4928607450d9e0abb932109ceToomas Soome source: [{type:"a",age:0,name:"c"},{type:"d",age:1,name:"f"},{type:"g",age:-1,name:"i"}]
199767f8919635c4928607450d9e0abb932109ceToomas Soome ds.plug({fn: Y.Plugin.DataSourceArraySchema, cfg: {
199767f8919635c4928607450d9e0abb932109ceToomas Soome resultFields: ["type", "name"]
199767f8919635c4928607450d9e0abb932109ceToomas Soome var handler = Y.Mock();
199767f8919635c4928607450d9e0abb932109ceToomas Soome method: "handleSuccess",
199767f8919635c4928607450d9e0abb932109ceToomas Soome args: [Y.Mock.Value(function(e){
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isNull(e.request, "Expected null request.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isObject(e.response, "Expected normalized response object.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isArray(e.response.results, "Expected results array.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame(3, e.response.results.length, "Expected 3 results.")
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("a", e.response.results[0].type, "Expected first type.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("g", e.response.results[2].type, "Expected last type.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("c", e.response.results[0].name, "Expected first name.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.areSame("i", e.response.results[2].name, "Expected last name.");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT.isUndefined(e.response.results[0].age, "Expected no age on first result.");
ds.sendRequest(null, {
failure: Y.bind(function(e) {
ASSERT.fail("Local failure case.");
var ds = new Y.DataSource.Local({
var handler = Y.Mock();
Y.Mock.expect(handler,{
args: [Y.Mock.Value(function(e){
ds.sendRequest(null, {
failure: Y.bind(function(e) {
ASSERT.fail("Local failure case.");
var testCaching = new Y.Test.Case({
var ds = new Y.DataSource.Local();
var ds = new Y.DataSource.Local();
var ds = new Y.DataSource.Local();
ds.cache.set("max", 5);
var ds = new Y.DataSource.Local({
ds.sendRequest("a");
ds.sendRequest("b");
ds.sendRequest("c");
ds.on("data", function(e) {
ASSERT.fail("Entry should be cached -- 'data' event is unexpected");
ds.sendRequest("a");
ds.sendRequest("b");
ds.sendRequest("c");
var ds = new Y.DataSource.Local({
ds.sendRequest("a");
ds.cache.on("retrieve", function(e) {
ASSERT.fail("Cache is unset -- 'retrieve' event is unexpected");
ds.unplug("cache");
ds.sendRequest("a");
var testPolling = new Y.Test.Case({
var ds = new Y.DataSource.Local();
ds = new Y.DataSource.IO();
var ds = new Y.DataSource.Local();
var handler = Y.Mock();
Y.Mock.expect(handler,{
args: [Y.Mock.Value.Any],
var id = ds.setInterval(500, null, {
success: handler.handleSuccess,
ASSERT.fail("IO failure case.");
ASSERT.isNumber(id, "Expected interval id.");
this.wait(function(){
ds.clearInterval(id);
this.wait(function(){
Y.Mock.verify(handler);
var ds = new Y.DataSource.Local();
var handler = Y.Mock();
Y.Mock.expect(handler,{
args: [Y.Mock.Value.Any],
ds.setInterval(500, null, {
success: handler.handleSuccess,
ASSERT.fail("IO failure case.");
ds.setInterval(500, null, {
success: handler.handleSuccess,
ASSERT.fail("IO failure case.");
ds.setInterval(500, null, {
success: handler.handleSuccess,
ASSERT.fail("IO failure case.");
this.wait(function(){
this.wait(function(){
Y.Mock.verify(handler);
Y.Test.Runner.add(testClass);
Y.Test.Runner.add(testLocal);
Y.Test.Runner.add(testIO);
Y.Test.Runner.add(testGet);
Y.Test.Runner.add(testFunction);
Y.Test.Runner.add(testDataSchemaPlugin);
Y.Test.Runner.add(testCaching);
Y.Test.Runner.add(testPolling);