Skip to content

Commit 6cc4e13

Browse files
committed
Better test for #request()
1 parent 009e6a6 commit 6cc4e13

1 file changed

Lines changed: 167 additions & 11 deletions

File tree

test/index.js

Lines changed: 167 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,99 @@ describe('Suite', function() {
9090
});
9191
});
9292

93+
describe('#request()', function() {
94+
var fp;
95+
before(function() {
96+
fp = new FilePreviews({ apiKey: 'key', apiSecret: 'secret' });
97+
});
98+
99+
it('should send auth information', function() {
100+
fp._request = function(request, callback) {
101+
assert.equal(request.auth.username, 'key');
102+
assert.equal(request.auth.password, 'secret');
103+
};
104+
105+
fp.request('http://example.com/');
106+
});
107+
108+
it('should set GET as default method', function() {
109+
fp._request = function(request, callback) {
110+
assert.equal(request.method, 'GET');
111+
};
112+
113+
fp.request('http://example.com/');
114+
});
115+
116+
it('should accept method type in options', function() {
117+
fp._request = function(request, callback) {
118+
assert.equal(request.method, 'POST');
119+
};
120+
121+
fp.request('http://example.com/', { method: 'POST' });
122+
});
123+
124+
it('should accept data String in options', function() {
125+
fp._request = function(request, callback) {
126+
assert.equal(request.body, 'my-data');
127+
};
128+
129+
fp.request('http://example.com//', { data: 'my-data' });
130+
});
131+
132+
it('should accept data Object in options', function() {
133+
fp._request = function(request, callback) {
134+
assert.equal(request.body.foo, 'bar');
135+
};
136+
137+
fp.request('http://example.com/', { data: { foo: 'bar' } });
138+
});
139+
140+
it('should format request correctly', function() {
141+
var url = 'http://example.com/one/two/three';
142+
143+
fp._request = function(request, callback) {
144+
assert.equal(request.auth.username, 'key');
145+
assert.equal(request.auth.password, 'secret');
146+
147+
assert.equal(request.method, 'POST');
148+
assert.equal(request.json, true);
149+
150+
assert.equal(request.url, url);
151+
assert.equal(request.body.foo, 'bar');
152+
};
153+
fp.request(url, {
154+
method: 'POST',
155+
data: { foo: 'bar'}
156+
});
157+
});
158+
159+
it('should handle success', function() {
160+
fp._request = function(request, callback) {
161+
var body = {
162+
foo: 'bar'
163+
};
164+
165+
callback(null, { statusCode: 200 }, body);
166+
};
167+
168+
fp.request('http://example.com/', {}, function(err, response) {
169+
assert.equal(err, null);
170+
assert.equal(response.foo, 'bar');
171+
});
172+
});
173+
174+
it('should handle error', function() {
175+
fp._request = function(request, callback) {
176+
callback(null, { statusCode: 500 }, 'Server Error');
177+
};
178+
179+
fp.request('http://example.com/', {}, function(err, response) {
180+
assert.equal(err, 'Server Error');
181+
assert.equal(response, null);
182+
});
183+
});
184+
});
185+
93186
describe('#generate()', function() {
94187
var fp;
95188
before(function() {
@@ -108,26 +201,42 @@ describe('Suite', function() {
108201

109202
assert.equal(url[3], 'v2');
110203
assert.equal(url[4], 'previews');
204+
205+
assert.equal(request.body.url, 'http://example.com/my-file.doc');
111206
};
112-
fp.generate('my-preview-id');
207+
fp.generate('http://example.com/my-file.doc');
113208
});
114209

115210
it('should handle success', function() {
211+
var url = 'http://example.com/my-file.doc';
116212
fp._request = function(request, callback) {
117-
callback(null, { statusCode: 200 }, 'Yei!');
213+
var response = { statusCode: 200 };
214+
var body = {
215+
id: '1',
216+
status: 'pending',
217+
preview: null,
218+
thumbnails: null,
219+
original_file: null,
220+
user_data: null,
221+
url: url
222+
};
223+
224+
callback(null, response, body);
118225
};
119-
fp.retrieve('my-preview-id', function(err, result) {
226+
fp.generate(url, function(err, result) {
120227
assert.equal(err, null);
121-
assert.equal(result, 'Yei!');
228+
assert.equal(result.id, '1');
229+
assert.equal(result.status, 'pending');
230+
assert.equal(result.url, url);
122231
});
123232
});
124233

125234
it('should handle error', function() {
126235
fp._request = function(request, callback) {
127-
callback('error', { statusCode: 400 }, 'Some Error');
236+
callback('error', { statusCode: 500 }, 'Server Error');
128237
};
129-
fp.retrieve('my-preview-id', function(err, result) {
130-
assert.equal(err, 'Some Error');
238+
fp.generate('my-preview-id', function(err, result) {
239+
assert.equal(err, 'Server Error');
131240
assert.equal(result, null);
132241
});
133242
});
@@ -158,20 +267,67 @@ describe('Suite', function() {
158267

159268
it('should handle success', function() {
160269
fp._request = function(request, callback) {
161-
callback(null, { statusCode: 200 }, 'Yei!');
270+
var request = { statusCode: 200 };
271+
var body = {
272+
status: 'success',
273+
thumbnails: [{
274+
url: 'http://example.com/user_manual_original_1.png',
275+
requested_size: 'original',
276+
resized: false,
277+
original_size: {
278+
width: '612',
279+
height: '792'
280+
},
281+
page: 1,
282+
size: {
283+
width: '612',
284+
height: '792'
285+
}
286+
}],
287+
url: 'http://example.com/v2/previews/123/',
288+
id: '123',
289+
preview: {
290+
url: 'http://example.com/user_manual_original_1.png',
291+
requested_size: 'original',
292+
resized: false,
293+
original_size: {
294+
width: '612',
295+
height: '792'
296+
},
297+
page: 1,
298+
size: {
299+
width: '612',
300+
height: '792'
301+
}
302+
},
303+
user_data: null,
304+
original_file: {
305+
mimetype: 'application/pdf',
306+
name: 'user_manual',
307+
extension: 'pdf',
308+
encoding: 'binary',
309+
total_pages: 1,
310+
metadata: {},
311+
type: 'application',
312+
size: 416905
313+
}
314+
};
315+
316+
callback(null, { statusCode: 200 }, body);
162317
};
163318
fp.retrieve('my-preview-id', function(err, result) {
164319
assert.equal(err, null);
165-
assert.equal(result, 'Yei!');
320+
assert.equal(result.status, 'success');
321+
assert.equal(result.url, 'http://example.com/v2/previews/123/');
166322
});
167323
});
168324

169325
it('should handle error', function() {
170326
fp._request = function(request, callback) {
171-
callback('error', { statusCode: 400 }, 'Some Error');
327+
callback('error', { statusCode: 500 }, 'Server Error');
172328
};
173329
fp.retrieve('my-preview-id', function(err, result) {
174-
assert.equal(err, 'Some Error');
330+
assert.equal(err, 'Server Error');
175331
assert.equal(result, null);
176332
});
177333
});

0 commit comments

Comments
 (0)