forked from trek/fakehr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fakehr.js
52 lines (48 loc) · 1.41 KB
/
fakehr.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
(function(){
// Extends FakeXMLHttpRequest to register each new
// request with fakehr
function FakeRequest(){
FakeXMLHttpRequest.call(this);
fakehr.addRequest(this);
}
FakeRequest.prototype = FakeXMLHttpRequest.prototype;
// reference the native XMLHttpRequest object so
// it can be restored lated
var nativeRequest = window.XMLHttpRequest;
var fakehr = {
addRequest: function(r){
this.requests.push(r);
},
start: function(){
this.requests = this.requests ||[];
window.XMLHttpRequest = FakeRequest;
},
stop: function(){
window.XMLHttpRequest = nativeRequest;
},
clear: function(){
var requests = this.requests;
// removes the objects from the original array
// just in case someone is referencing it.
// the removed requests will never get a response.
while (requests.length > 0) {
requests.pop();
}
},
reset: function(){
this.stop();
this.clear();
},
match: function(method, url, readyState){
if (readyState === undefined) { readyState = 1;}
var requests = this.requests;
for (var i = requests.length - 1; i >= 0; i--) {
var request = requests[i];
if(request.method.toLowerCase() === method.toLowerCase() && request.url === url && request.readyState === readyState) {
return request;
}
};
}
}
window.fakehr = fakehr;
})();