1
YUI.add('datasource-io-tests', function(Y) {
4
ObjectAssert = Y.ObjectAssert,
6
suite = new Y.Test.Suite("DataSource.IO Test Suite"),
8
jsonData = '{"ResultSet":{"Result":[{"Title":"Madonna"}]}}';
11
suite.add(new Y.Test.Case({
12
name: "DataSource.IO Tests",
14
testConstructorIO: function() {
15
var ds = new Y.DataSource.IO();
16
Assert.isInstanceOf(Y.Base, ds, "Expected Base instance.");
17
Assert.isInstanceOf(Y.DataSource.Local, ds, "Expected DataSource.Local instance.");
18
Assert.isInstanceOf(Y.DataSource.IO, ds, "Expected DataSource.IO instance.");
21
testIODefaults: function() {
22
var ds = new Y.DataSource.IO({
23
source: "./php/ysearch_json_madonna.php",
24
io: function (uri, config) {
26
config.on.success.call(ds, id, {
27
responseText: jsonData
28
}, config["arguments"]);
33
request, response, tId, data, callback;
38
success: function (e) {
40
response = e.response;
43
callback = e.callback;
48
Assert.isNull(request, "Expected null request.");
49
Assert.isObject(response, "Expected response object.");
50
Assert.isNotUndefined(tId);
51
Assert.isNotUndefined(data);
52
Assert.isNotUndefined(callback);
55
testIOConfig: function() {
56
var ioCallback, failureCallback,
57
ds = new Y.DataSource.IO({
64
io: function (uri, config) {
66
Assert.areSame(1, config.timeout);
67
Assert.areSame(ds, config.context);
68
Assert.areSame("foo=bar", config.data);
69
Assert.areSame("POST", config.method);
73
config.on.failure.call(config.context, id, {
74
responseText: jsonData
75
}, config["arguments"]);
82
failure: function (e) {
83
Assert.isObject(e.error, "Expected error from timeout.");
84
Assert.isNull(e.request, "Expected null request.");
85
Assert.isObject(e.response, "Expected response object.");
86
ObjectAssert.ownsKeys({
92
}, e, "Expected all properties.");
93
failureCallback = true;
98
Assert.isTrue(ioCallback);
99
Assert.isTrue(failureCallback);
102
testIOPost: function() {
103
var ioCallback, successCallback,
104
ds = new Y.DataSource.IO({
105
source: "./php/ysearch_json_madonna.php",
106
io: function (uri, config) {
108
Assert.areSame(ds, config.context);
109
Assert.areSame("foo=bar", config.data);
110
Assert.areSame("POST", config.method);
114
config.on.success.call(config.context, id, {
115
responseText: jsonData
116
}, config["arguments"]);
122
success: function (e) {
123
Assert.isUndefined(e.request, "Expected undefined request.");
124
Assert.isObject(e.response, "Expected response object.");
125
ObjectAssert.ownsKeys({
131
}, e, "Expected all properties.");
133
successCallback = true;
142
Assert.isTrue(ioCallback);
143
Assert.isTrue(successCallback);
146
testIOEvents: function() {
147
var ioCallback, requestCallback, dataCallback, responseCallback,
148
ds = new Y.DataSource.IO({
149
source: "./php/ysearch_json_madonna.php",
150
io: function (uri, config) {
155
config.on.success.call(config.context, id, {
156
responseText: jsonData
157
}, config["arguments"]);
161
ds.plug(Y.Plugin.DataSourceJSONSchema, {
163
resultListLocator: "ResultSet.Result",
164
resultFields: ["Title"]
168
ds.on("request", function (e) {
169
Assert.areSame("dataSourceIO:request", e.type);
170
Assert.isNumber(e.tId, "request: Expected transaction ID.");
171
Assert.isUndefined(e.request, "request: Expected undefined request.");
172
Assert.areSame("callback", e.callback, "request: Expected callback.");
173
requestCallback = true;
176
ds.on("data", function (e) {
177
Assert.areSame("dataSourceIO:data", e.type);
178
Assert.isNumber(e.tId, "data: Expected transaction ID.");
179
Assert.isUndefined(e.request, "data: Expected undefined request.");
180
Assert.areSame("callback", e.callback, "data: Expected callback.");
181
Assert.isObject(e.data, "data: Expected raw data.");
185
ds.on("response", function (e) {
186
Assert.areSame("dataSourceIO:response", e.type);
187
Assert.isNumber(e.tId, "response: Expected transaction ID.");
188
Assert.isUndefined(e.request, "response: Expected undefined request.");
189
Assert.areSame("callback", e.callback, "response: Expected callback.");
190
Assert.isObject(e.data, "response: Expected raw data.");
191
Assert.isObject(e.response, "response: Expected normalized response object.");
192
Assert.isArray(e.response.results, "response: Expected parsed results.");
193
Assert.isObject(e.response.meta, "response: Expected parsed meta data.");
194
responseCallback = true;
201
Assert.isTrue(ioCallback);
202
Assert.isTrue(requestCallback);
203
Assert.isTrue(dataCallback);
204
Assert.isTrue(responseCallback);
207
testIOError: function() {
208
var ds = new Y.DataSource.IO({
209
source: "./php/ysearch_json_madonna.php",
210
io: function (uri, config) {
212
config.on.failure.call(config.context, id, {
213
responseText: jsonData
214
}, config["arguments"]);
219
ds.plug(Y.Plugin.DataSourceJSONSchema, {
221
resultListLocator: "ResultSet.Result",
222
resultFields: ["Title"]
226
ds.on("error", function (e) {
227
Assert.areSame("dataSourceIO:error", e.type);
228
Assert.isNumber(e.tId, "error: Expected transaction ID.");
229
Assert.areSame("a", e.request, "error: Expected request.");
230
Assert.areSame("callback", e.callback, "error: Expected callback.");
231
Assert.isObject(e.data, "error: Expected raw data.");
232
Assert.isObject(e.response, "error: Expected normalized response object.");
233
Assert.isObject(e.error, "error: Expected error.");
234
errorCallback = true;
237
ds.set("source", "foo");
243
Assert.isTrue(errorCallback);
247
Y.Test.Runner.add(suite);
250
}, '@VERSION@' ,{requires:['datasource-io', 'test']});