Skip to content

Commit 900806e

Browse files
committed
Added core ajaxQueue qunit tests
Using sinon.js to fake HTTP requests and verifying that the ajax requests are queued.
1 parent fae588e commit 900806e

File tree

1 file changed

+108
-31
lines changed

1 file changed

+108
-31
lines changed

test/jquery.ajaxQueue_test.js

+108-31
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,112 @@
1-
/*global sinon, window*/
1+
/*global sinon, console*/
22
(function( $ ) {
3-
/*
4-
======== A Handy Little QUnit Reference ========
5-
http://docs.jquery.com/QUnit
6-
7-
Test methods:
8-
expect(numAssertions)
9-
stop(increment)
10-
start(decrement)
11-
Test assertions:
12-
ok(value, [message])
13-
equal(actual, expected, [message])
14-
notEqual(actual, expected, [message])
15-
deepEqual(actual, expected, [message])
16-
notDeepEqual(actual, expected, [message])
17-
strictEqual(actual, expected, [message])
18-
notStrictEqual(actual, expected, [message])
19-
raises(block, [expected], [message])
20-
*/
21-
22-
module( "ajaxQueue", {
23-
setup: function() {
24-
},
25-
teardown: function() {
26-
}
27-
});
28-
29-
test( "OK", function() {
30-
expect( 1 );
31-
ok( true );
32-
});
3+
/*
4+
======== A Handy Little QUnit Reference ========
5+
http://docs.jquery.com/QUnit
336
7+
Test methods:
8+
expect(numAssertions)
9+
stop(increment)
10+
start(decrement)
11+
Test assertions:
12+
ok(value, [message])
13+
equal(actual, expected, [message])
14+
notEqual(actual, expected, [message])
15+
deepEqual(actual, expected, [message])
16+
notDeepEqual(actual, expected, [message])
17+
strictEqual(actual, expected, [message])
18+
notStrictEqual(actual, expected, [message])
19+
raises(block, [expected], [message])
20+
*/
21+
22+
var requests;
23+
24+
module( "ajaxQueue", {
25+
setup: function() {
26+
requests = [];
27+
this.xhr = sinon.useFakeXMLHttpRequest();
28+
this.xhr.onCreate = function (xhr) {
29+
xhr.customRespond = function() {
30+
this.respond(200, { "Content-Type": "application/json" },
31+
'{ "id": 10, "name": "ajaxQueue" }');
32+
};
33+
requests.push(xhr);
34+
};
35+
},
36+
teardown: function() {
37+
this.xhr.restore();
38+
}
39+
});
40+
41+
asyncTest( "Smoke detection: Normal ajax request", 1, function () {
42+
$.ajax({
43+
url: "mock.json",
44+
dataType: "json",
45+
success: function(data) {
46+
start();
47+
equal(data.name, "ajaxQueue");
48+
}
49+
});
50+
requests[0].customRespond();
51+
});
52+
53+
asyncTest( "Single ajaxQueue request", 1, function () {
54+
$.ajaxQueue({
55+
url: "mock.json",
56+
dataType: "json",
57+
success: function(data) {
58+
start();
59+
equal(data.name, "ajaxQueue");
60+
}
61+
});
62+
requests[0].customRespond();
63+
});
64+
65+
asyncTest( "Concurrent ajaxQueue requests", 9, function () {
66+
$.ajaxQueue({
67+
url: "first_mock.json",
68+
dataType: "json",
69+
success: function(data) {
70+
console.log("\n1st mock received");
71+
equal(data.name, "ajaxQueue");
72+
}
73+
});
74+
$.ajaxQueue({
75+
url: "second_mock.json",
76+
dataType: "json",
77+
success: function(data) {
78+
console.log("2nd mock received");
79+
equal(data.name, "ajaxQueue");
80+
}
81+
});
82+
$.ajaxQueue({
83+
url: "third_mock.json",
84+
dataType: "json",
85+
success: function(data) {
86+
console.log("3rd mock received");
87+
start();
88+
equal(data.name, "ajaxQueue");
89+
}
90+
});
91+
92+
equal(requests.length, 1, "Only one request is called at a time");
93+
equal(requests[0].url, "first_mock.json", "... and it's the 1st");
94+
95+
setTimeout(function() {
96+
requests[0].customRespond();
97+
98+
equal(requests.length, 2, "Next request is called after 1st is received");
99+
equal(requests[1].url, "second_mock.json", "... and it's the 2nd");
100+
101+
setTimeout(function() {
102+
requests[1].customRespond();
103+
104+
equal(requests.length, 3, "Next request is called after 2nd is received");
105+
equal(requests[2].url, "third_mock.json", "... and it's the 3rd");
106+
107+
requests[2].customRespond();
108+
}, 500);
109+
}, 500);
110+
});
34111

35112
}(jQuery));

0 commit comments

Comments
 (0)