Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: remoting/webapp/crd/js/mock_xhr_unittest.js

Issue 1055313002: Added mock_xhr module w/ unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 (function() {
6 'use strict';
7
8 QUnit.module('mock_xhr', {
9 beforeEach: function() {
10 base.debug.throwOnAssert = true;
Jamie 2015/04/03 01:45:58 You're setting a global here without restoring it
John Williams 2015/04/04 01:40:26 Couldn't find a good place to move it to, so I jus
11 remoting.MockXhr.activate();
12 },
13 afterEach: function() {
14 remoting.MockXhr.restore();
15 }
16 });
17
18 QUnit.test('multiple calls to activate() fail', function(assert) {
19 assert.throws(function() {
20 remoting.MockXhr.activate();
21 });
22 });
23
24 QUnit.test('restore() without activate() fails', function(assert) {
25 remoting.MockXhr.restore();
26 assert.throws(function() {
27 remoting.MockXhr.restore();
28 });
29 remoting.MockXhr.activate();
30 });
31
32 /**
33 * @param {string=} opt_url The URL to request.
34 * @return {!Promise<!remoting.Xhr.Response>}
35 */
36 function sendRequest(opt_url) {
37 return new remoting.Xhr({
38 method: 'GET',
39 url: opt_url || 'http://foo.com'
40 }).start();
41 };
42
43 /**
44 * @return {!Promise<!remoting.Xhr.Response>}
45 */
46 function sendRequestForJson() {
47 return new remoting.Xhr({
48 method: 'GET',
49 url: 'http://foo.com',
50 acceptJson: true
51 }).start();
52 }
53
54 QUnit.test('unhandled requests fail', function(assert) {
55 assert.throws(sendRequest);
56 });
57
58 QUnit.test('setEmptyResponseFor', function(assert) {
59 remoting.MockXhr.setEmptyResponseFor('GET', 'http://foo.com');
60 var promise = sendRequest();
61 assert.throws(sendRequest);
62 return promise.then(function(/** remoting.Xhr.Response */ result) {
63 assert.equal(result.status, 204);
64 assert.equal(result.getText(), '');
65 assert.throws(result.getJson.bind(result));
66 });
67 });
68
69 QUnit.test('setEmptyResponseFor with repeat', function(assert) {
70 remoting.MockXhr.setEmptyResponseFor('GET', 'http://foo.com', true);
71 var promise1 = sendRequest();
72 var promise2 = sendRequest();
73 return promise1.then(function(/** remoting.Xhr.Response */ result) {
74 assert.equal(result.status, 204);
75 assert.equal(result.getText(), '');
76 assert.throws(result.getJson.bind(result));
77 return promise2;
78 }).then(function(/** remoting.Xhr.Response */ result) {
79 assert.equal(result.status, 204);
80 assert.equal(result.getText(), '');
81 assert.throws(result.getJson.bind(result));
82 });
83 });
84
85 QUnit.test('setEmptyResponseFor with RegExp', function(assert) {
86 remoting.MockXhr.setEmptyResponseFor('GET', /foo/);
87 var promise = sendRequest();
88 assert.throws(sendRequest);
89 return promise.then(function(/** remoting.Xhr.Response */ result) {
90 assert.equal(result.status, 204);
91 assert.equal(result.getText(), '');
92 assert.throws(result.getJson.bind(result));
93 });
94 });
95
96 QUnit.test('setTextResponseFor', function(assert) {
97 remoting.MockXhr.setTextResponseFor('GET', /foo/, 'first');
98 remoting.MockXhr.setTextResponseFor('GET', /foo/, 'second');
99 var promise1 = sendRequest();
100 var promise2 = sendRequest();
101 return promise1.then(function(/** remoting.Xhr.Response */ result) {
102 assert.equal(result.status, 200);
103 assert.equal(result.getText(), 'first');
104 assert.throws(result.getJson.bind(result));
105 return promise2;
106 }).then(function(/** remoting.Xhr.Response */ result) {
107 assert.equal(result.status, 200);
108 assert.equal(result.getText(), 'second');
109 assert.throws(result.getJson.bind(result));
110 });
111 });
112
113 QUnit.test('setTextResponseFor with different URLs', function(assert) {
114 remoting.MockXhr.setTextResponseFor('GET', /foo/, 'first');
115 remoting.MockXhr.setTextResponseFor('GET', /bar/, 'second');
116 var promise1 = sendRequest('http://bar.com');
117 var promise2 = sendRequest();
118 return promise1.then(function(/** remoting.Xhr.Response */ result) {
119 assert.equal(result.status, 200);
120 assert.equal(result.getText(), 'second');
121 assert.throws(result.getJson.bind(result));
122 return promise2;
123 }).then(function(/** remoting.Xhr.Response */ result) {
124 assert.equal(result.status, 200);
125 assert.equal(result.getText(), 'first');
126 assert.throws(result.getJson.bind(result));
127 });
128 });
129
130
131 QUnit.test('setTextResponseFor with default', function(assert) {
132 remoting.MockXhr.setTextResponseFor('GET', /foo/, 'specific');
133 remoting.MockXhr.setTextResponseFor('GET', null, 'default', true);
134 var promise1 = sendRequest('http://bar.com');
135 var promise2 = sendRequest();
136 var promise3 = sendRequest();
137 return promise1.then(function(/** remoting.Xhr.Response */ result) {
138 assert.equal(result.status, 200);
139 assert.equal(result.getText(), 'default');
140 assert.throws(result.getJson.bind(result));
141 return promise2;
142 }).then(function(/** remoting.Xhr.Response */ result) {
143 assert.equal(result.status, 200);
144 assert.equal(result.getText(), 'specific');
145 assert.throws(result.getJson.bind(result));
146 return promise3;
147 }).then(function(/** remoting.Xhr.Response */ result) {
148 assert.equal(result.status, 200);
149 assert.equal(result.getText(), 'default');
150 assert.throws(result.getJson.bind(result));
151 });
152 });
153
154
155 QUnit.test('setJsonResponseFor', function(assert) {
156 remoting.MockXhr.setJsonResponseFor('GET', 'http://foo.com', 'foo');
157 var promise = sendRequestForJson();
158 assert.throws(sendRequestForJson);
159 return promise.then(function(/** remoting.Xhr.Response */ result) {
160 assert.equal(result.status, 200);
161 assert.equal(JSON.parse(result.getText()), 'foo');
162 assert.equal(result.getJson(), 'foo');
163 });
164 });
165
166 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698