trigger onreadystatechange everywhere we set readyState

- Partially addresses #19
This commit is contained in:
slackersoft 2014-01-17 10:41:23 -08:00
parent ca0acd7109
commit 3ebf994356
2 changed files with 12 additions and 0 deletions

View File

@ -109,6 +109,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
this.username = arguments[3]; this.username = arguments[3];
this.password = arguments[4]; this.password = arguments[4];
this.readyState = 1; this.readyState = 1;
this.onreadystatechange();
}, },
setRequestHeader: function(header, value) { setRequestHeader: function(header, value) {
@ -119,6 +120,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
this.readyState = 0; this.readyState = 0;
this.status = 0; this.status = 0;
this.statusText = "abort"; this.statusText = "abort";
this.onreadystatechange();
}, },
readyState: 0, readyState: 0,
@ -134,6 +136,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
send: function(data) { send: function(data) {
this.params = data; this.params = data;
this.readyState = 2; this.readyState = 2;
this.onreadystatechange();
var stub = stubTracker.findStub(this.url); var stub = stubTracker.findStub(this.url);
if (stub) { if (stub) {

View File

@ -43,30 +43,39 @@ describe("FakeXMLHttpRequest", function() {
describe("when opened", function() { describe("when opened", function() {
beforeEach(function() { beforeEach(function() {
spyOn(xhr, 'onreadystatechange');
xhr.open("GET", "http://example.com"); xhr.open("GET", "http://example.com");
}); });
it("should have a readyState of 1 (open)", function() { it("should have a readyState of 1 (open)", function() {
expect(xhr.readyState).toEqual(1); expect(xhr.readyState).toEqual(1);
expect(xhr.onreadystatechange).toHaveBeenCalled();
}); });
describe("when sent", function() { describe("when sent", function() {
it("should have a readyState of 2 (sent)", function() { it("should have a readyState of 2 (sent)", function() {
xhr.onreadystatechange.calls.reset();
xhr.send(null); xhr.send(null);
expect(xhr.readyState).toEqual(2); expect(xhr.readyState).toEqual(2);
expect(xhr.onreadystatechange).toHaveBeenCalled();
}); });
}); });
describe("when a response comes in", function() { describe("when a response comes in", function() {
it("should have a readyState of 4 (loaded)", function() { it("should have a readyState of 4 (loaded)", function() {
xhr.onreadystatechange.calls.reset();
xhr.response({status: 200}); xhr.response({status: 200});
expect(xhr.readyState).toEqual(4); expect(xhr.readyState).toEqual(4);
expect(xhr.onreadystatechange).toHaveBeenCalled();
}); });
}); });
describe("when aborted", function() { describe("when aborted", function() {
it("should have a readyState of 0 (uninitialized)", function() { it("should have a readyState of 0 (uninitialized)", function() {
xhr.onreadystatechange.calls.reset();
xhr.abort(); xhr.abort();
expect(xhr.readyState).toEqual(0); expect(xhr.readyState).toEqual(0);
expect(xhr.onreadystatechange).toHaveBeenCalled();
expect(xhr.status).toEqual(0); expect(xhr.status).toEqual(0);
expect(xhr.statusText).toEqual("abort"); expect(xhr.statusText).toEqual("abort");
}); });