aboutsummaryrefslogtreecommitdiffstats
path: root/test/caldav/xhr_test.js
diff options
context:
space:
mode:
authorJames Lal <james@lightsofapollo.com>2012-07-06 08:13:15 -0700
committerJames Lal <james@lightsofapollo.com>2012-07-06 08:13:15 -0700
commit20711f003e97a4a57d1e2838ba78a994c5faf6c0 (patch)
treeb060e5de05a9ffefc2ec836469c087fffa99dcef /test/caldav/xhr_test.js
parentc8e85fe1e0a1d2e15df580068244324ff536a23a (diff)
downloadjsCalDAV-20711f003e97a4a57d1e2838ba78a994c5faf6c0.tar.gz
webcals -> caldav rename (yes, back again)
Diffstat (limited to 'test/caldav/xhr_test.js')
-rw-r--r--test/caldav/xhr_test.js138
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();
+ });
+
+ });
+
+});
+
+