datasource-io-tests.js revision 2fe13ddab136a6eb6239d89e5e064e09d9e1bb92
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke SmithYUI.add('datasource-io-tests', function(Y) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smithvar Assert = Y.Assert,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ObjectAssert = Y.ObjectAssert,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith suite = new Y.Test.Suite("DataSource.IO Test Suite"),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith jsonData = '{"ResultSet":{"Result":[{"Title":"Madonna"}]}}';
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smithsuite.add(new Y.Test.Case({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith name: "DataSource.IO Tests",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testConstructorIO: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.IO();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isInstanceOf(Y.Base, ds, "Expected Base instance.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isInstanceOf(Y.DataSource.Local, ds, "Expected DataSource.Local instance.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isInstanceOf(Y.DataSource.IO, ds, "Expected DataSource.IO instance.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testIODefaults: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.IO({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "./php/ysearch_json_madonna.php",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith io: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var id = Y.guid();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.on.success.call(ds, id, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseText: jsonData
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, config["arguments"]);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith return id;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request, response, tId, data, callback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: null,
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.isNull(request, "Expected null 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 testIOConfig: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ioCallback, failureCallback,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds = new Y.DataSource.IO({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "x",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ioConfig: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith method: "POST",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith data: "foo=bar",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith timeout: 1
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith io: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var id = Y.guid();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame(1, config.timeout);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame(ds, config.context);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("foo=bar", config.data);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("POST", config.method);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ioCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.on.failure.call(config.context, id, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseText: jsonData
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, config["arguments"]);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith failure: function (e) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.error, "Expected error from timeout.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNull(e.request, "Expected null request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.response, "Expected response object.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ObjectAssert.ownsKeys({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith tId: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith data: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith response: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: null
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, e, "Expected all properties.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith failureCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(ioCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(failureCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testIOPost: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ioCallback, successCallback,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds = new Y.DataSource.IO({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "./php/ysearch_json_madonna.php",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith io: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var id = Y.guid();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame(ds, config.context);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("foo=bar", config.data);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.areSame("POST", config.method);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ioCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.on.success.call(config.context, id, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseText: jsonData
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, config["arguments"]);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.sendRequest({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith success: function (e) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isUndefined(e.request, "Expected undefined request.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isObject(e.response, "Expected response object.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ObjectAssert.ownsKeys({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith tId: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith request: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith data: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith response: null,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith callback: null
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, e, "Expected all properties.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith successCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith cfg: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith method: "POST",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith data: "foo=bar"
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(ioCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(successCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testIOEvents: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ioCallback, requestCallback, dataCallback, responseCallback,
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds = new Y.DataSource.IO({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "./php/ysearch_json_madonna.php",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith io: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var id = Y.guid();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ioCallback = true;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.on.success.call(config.context, id, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseText: jsonData
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, config["arguments"]);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.plug(Y.Plugin.DataSourceJSONSchema, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith schema: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultListLocator: "ResultSet.Result",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultFields: ["Title"]
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("request", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceIO:request", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "request: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isUndefined(e.request, "request: Expected undefined 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("dataSourceIO:data", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "data: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isUndefined(e.request, "data: Expected undefined 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("dataSourceIO:response", e.type);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isNumber(e.tId, "response: Expected transaction ID.");
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isUndefined(e.request, "response: Expected undefined 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 callback: "callback"
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(ioCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(requestCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(dataCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith Assert.isTrue(responseCallback);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith },
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith testIOError: function() {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var ds = new Y.DataSource.IO({
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith source: "./php/ysearch_json_madonna.php",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith io: function (uri, config) {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith var id = Y.guid();
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith config.on.failure.call(config.context, id, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith responseText: jsonData
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }, config["arguments"]);
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }),
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith errorCallback;
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.plug(Y.Plugin.DataSourceJSONSchema, {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith schema: {
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultListLocator: "ResultSet.Result",
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith resultFields: ["Title"]
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith }
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith });
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith
d08a2495e1fbc0cf1435767148ec01129af3bcd6Luke Smith ds.on("error", function (e) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith Assert.areSame("dataSourceIO: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.isObject(e.data, "error: Expected raw 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-io', 'test']});