diff options
author | James Lal <james@lightsofapollo.com> | 2012-07-06 08:13:15 -0700 |
---|---|---|
committer | James Lal <james@lightsofapollo.com> | 2012-07-06 08:13:15 -0700 |
commit | 20711f003e97a4a57d1e2838ba78a994c5faf6c0 (patch) | |
tree | b060e5de05a9ffefc2ec836469c087fffa99dcef /test/caldav/xhr_test.js | |
parent | c8e85fe1e0a1d2e15df580068244324ff536a23a (diff) | |
download | jsCalDAV-20711f003e97a4a57d1e2838ba78a994c5faf6c0.tar.gz |
webcals -> caldav rename (yes, back again)
Diffstat (limited to 'test/caldav/xhr_test.js')
-rw-r--r-- | test/caldav/xhr_test.js | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/test/caldav/xhr_test.js b/test/caldav/xhr_test.js new file mode 100644 index 0000000..c442852 --- /dev/null +++ b/test/caldav/xhr_test.js @@ -0,0 +1,138 @@ +testSupport.lib('xhr'); +testSupport.helper('fake_xhr'); + +suite('webacls/xhr', function() { + var subject, + Xhr, + FakeXhr; + + + suiteSetup(function() { + Xhr = Caldav.require('xhr'); + FakeXhr = Caldav.require('support/fake_xhr'); + }); + + setup(function() { + subject = new Xhr({ + method: 'POST' + }); + }); + + suite('initialization', function() { + + test('should set options on instance', function() { + assert.equal(subject.method, 'POST'); + }); + + }); + + suite('.abort', function() { + suite('when there is an xhr object', function() { + var aborted; + + setup(function() { + aborted = false; + subject.xhr = { + abort: function() { + aborted = true; + } + }; + subject.abort(); + }); + + test('should call abort on the xhr object', function() { + assert.equal(aborted, true); + }); + }); + + suite('when there is no xhr object', function() { + test('should not fail', function() { + subject.xhr = null; + subject.abort(); + }); + }); + }); + + suite('.send', function() { + + var data = '<html></html>', + url = 'http://foo', + xhr, + responseXhr; + + function callback(done, data, xhr) { + responseXhr = xhr; + done(); + } + + function request(options) { + options.xhrClass = FakeXhr; + subject = new Xhr(options); + } + + function opensXHR() { + test('should create xhr', function() { + assert.instanceOf(subject.xhr, FakeXhr); + }); + + test('should set headers', function() { + assert.deepEqual(subject.xhr.headers, subject.headers); + }); + + test('should parse and send data', function() { + assert.deepEqual(subject.xhr.sendArgs[0], data); + }); + + test('should open xhr', function() { + assert.deepEqual(subject.xhr.openArgs, [ + subject.method, + subject.url, + subject.async, + subject.user, + subject.password + ]); + }); + } + + setup(function() { + responseXhr = null; + }); + + suite('when xhr is a success and responds /w data', function() { + var response = '<html></html>', cb; + + setup(function(done) { + var xhr; + request({ + data: data, + url: url, + method: 'PUT' + }); + cb = callback.bind(this, done); + subject.send(cb); + + //should be waiting inbetween requests + assert.equal(subject.waiting, true); + + xhr = subject.xhr; + xhr.readyState = 4; + xhr.responseText = response; + xhr.onreadystatechange(); + }); + + test('should not be waiting after response', function() { + assert.equal(subject.waiting, false); + }); + + test('should send callback parsed data and xhr', function() { + assert.equal(responseXhr, subject.xhr); + }); + + opensXHR(); + }); + + }); + +}); + + |