3
suite = new Y.Test.Suite("DataSource.Function Test Suite");
7
{ type: "a", age: 0, name: "c" },
8
{ type: "d", age: 1, name: "f" },
9
{ type: "g", age: -1, name: "i" }
13
suite.add(new Y.Test.Case({
14
name: "DataSource.Function Tests",
16
testFunctionDefaults: function() {
17
var ds = new Y.DataSource.Function({ source: testFn }),
18
request = null, response, tId, data, callback;
23
success: function (e) {
25
response = e.response;
28
callback = e.callback;
33
Assert.areSame("foo", request, "Expected same request.");
34
Assert.isObject(response, "Expected response object.");
35
Assert.isNotUndefined(tId);
36
Assert.isNotUndefined(data);
37
Assert.isNotUndefined(callback);
40
testFunctionEvents: function() {
41
var ds = new Y.DataSource.Function({ source: testFn }),
42
requestCallback, dataCallback, responseCallback;
44
ds.plug(Y.Plugin.DataSourceArraySchema, {
46
resultFields: ["type", "name"]
50
ds.on("request", function (e) {
51
Assert.areSame("dataSourceFunction:request", e.type);
52
Assert.isNumber(e.tId, "request: Expected transaction ID.");
53
Assert.areSame("foo", e.request, "Expected same request.");
54
Assert.areSame("callback", e.callback, "request: Expected callback.");
55
requestCallback = true;
58
ds.on("data", function (e) {
59
Assert.areSame("dataSourceFunction:data", e.type);
60
Assert.isNumber(e.tId, "data: Expected transaction ID.");
61
Assert.areSame("foo", e.request, "Expected same request.");
62
Assert.areSame("callback", e.callback, "data: Expected callback.");
63
Assert.isObject(e.data, "data: Expected raw data.");
67
ds.on("response", function (e) {
68
Assert.areSame("dataSourceFunction:response", e.type);
69
Assert.isNumber(e.tId, "response: Expected transaction ID.");
70
Assert.areSame("foo", e.request, "Expected same request.");
71
Assert.areSame("callback", e.callback, "response: Expected callback.");
72
Assert.isObject(e.data, "response: Expected raw data.");
73
Assert.isObject(e.response, "response: Expected normalized response object.");
74
Assert.isArray(e.response.results, "response: Expected parsed results.");
75
Assert.isObject(e.response.meta, "response: Expected parsed meta data.");
76
responseCallback = true;
81
callback: "callback" // ???
84
Assert.isTrue(requestCallback);
85
Assert.isTrue(dataCallback);
86
Assert.isTrue(responseCallback);
89
testFunctionError: function() {
90
var ds = new Y.DataSource.Function({ source: "foo" }),
93
ds.plug(Y.Plugin.DataSourceArraySchema, {
95
resultFields: ["type", "name"]
99
ds.on("error", function (e) {
100
Assert.areSame("dataSourceFunction:error", e.type);
101
Assert.isNumber(e.tId, "error: Expected transaction ID.");
102
Assert.areSame("a", e.request, "error: Expected request.");
103
Assert.areSame("callback", e.callback, "error: Expected callback.");
104
Assert.isUndefined(e.data, "error: Expected undefined data.");
105
Assert.isObject(e.response, "error: Expected normalized response object.");
106
Assert.isObject(e.error, "error: Expected error.");
107
errorCallback = true;
115
Assert.isTrue(errorCallback);
118
testFunctionException: function() {
119
var ds = new Y.DataSource.Function({
121
throw new Error("myException");
126
ds.plug(Y.Plugin.DataSourceArraySchema, {
128
resultFields: ["type", "name"]
132
ds.on("error", function (e) {
133
Assert.isNumber(e.tId, "error: Expected transaction ID.");
134
Assert.areSame("a", e.request, "error: Expected request.");
135
Assert.areSame("callback", e.callback, "error: Expected callback.");
136
Assert.isUndefined(e.data, "error: Expected undefined data.");
137
Assert.isObject(e.response, "error: Expected normalized response object.");
138
Assert.isObject(e.error, "error: Expected error.");
139
Assert.areSame("myException", e.error.message, "error: Expected message.");
140
errorCallback = true;
148
Assert.isTrue(errorCallback);
151
"success or failure callback should not cause data event to fire again":
153
var ds = new Y.DataSource.Function({
154
source: function () { return ['a','b']; }
158
ds.on("data", function () {
165
success: function () {
166
throw new Error("boom");
172
Y.Assert.areSame(1, count);
177
Y.Test.Runner.add(suite);