d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke SmithYUI.add('datasource-get-tests', function(Y) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smithvar Assert = Y.Assert,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith suite = new Y.Test.Suite("DataSource.Get Test Suite"),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith jsonData = {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ResultSet: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Result: [
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith { Title: "Madonna" }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ]
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith };
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smithsuite.add(new Y.Test.Case({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith name: "DataSource.Get Tests",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testGetDefaults: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.Get({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "http://query.yahooapis.com/v1/public/yql?format=json&",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith get: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith script: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var fn = uri.match(/callback=YUI\.Env\.DataSource\.callbacks\.([^&]*)/)[1];
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith YUI.Env.DataSource.callbacks[fn](jsonData);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request, response, tId, data, callback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: "q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith success: function (e) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request = e.request;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith response = e.response;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith tId = e.tId;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith data = e.data;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback = e.callback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", request, "Expected same request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(response, "Expected response object.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNotUndefined(tId);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNotUndefined(data);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNotUndefined(callback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testGetEvents: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.Get({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "http://query.yahooapis.com/v1/public/yql?format=json&",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith get: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith script: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var fn = uri.match(/callback=YUI\.Env\.DataSource\.callbacks\.([^&]*)/)[1];
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith YUI.Env.DataSource.callbacks[fn](jsonData);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith requestCallback, dataCallback, responseCallback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.plug(Y.Plugin.DataSourceJSONSchema, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith schema: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultListLocator: "query.results.result",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultFields: ["title"]
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("request", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceGet:request", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "request: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("callback", e.callback, "request: Expected callback.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith requestCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("data", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceGet:data", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "data: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("callback", e.callback, "data: Expected callback.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.data, "data: Expected raw data.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith dataCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("response", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceGet:response", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "response: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22", e.request, "Expected same request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("callback", e.callback, "response: Expected callback.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.data, "response: Expected raw data.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.response, "response: Expected normalized response object.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isArray(e.response.results, "response: Expected parsed results.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.response.meta, "response: Expected parsed meta data.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: "q=select%20*%20from%20search.web%20where%20query%3D%22pizza%22",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: "callback"
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(requestCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(dataCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(responseCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testGetError: function () {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.Get({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "http://query.yahooapis.com/v1/public/yql?format=json&",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith get: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith script: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.onFailure({ msg: "Planned failure" });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith errorCallback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.plug(Y.Plugin.DataSourceJSONSchema, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith schema: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultListLocator: "query.results.result",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultFields: ["title"]
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("error", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceGet:error", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "error: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("a", e.request, "error: Expected request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("callback", e.callback, "error: Expected callback.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isUndefined(e.data, "error: Expected undefined data.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.response, "error: Expected normalized response object.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.error, "error: Expected error.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith errorCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.set("source", "foo");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: "a",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: "callback"
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(errorCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith}));
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke SmithY.Test.Runner.add(suite);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith}, '@VERSION@' ,{requires:['datasource-get', 'test']});