aboutsummaryrefslogtreecommitdiff
path: root/node_modules/isomorphic-fetch/test/api.test.js
blob: c25a5cbe87941cc0c1045b33ca2dc17b1e019609 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*global fetch*/
"use strict";

require('es6-promise').polyfill();
require('../fetch-npm-node');
var expect = require('chai').expect;
var nock = require('nock');
var good = 'hello world. 你好世界。';
var bad = 'good bye cruel world. 再见残酷的世界。';

function responseToText(response) {
	if (response.status >= 400) throw new Error("Bad server response");
	return response.text();
}

describe('fetch', function() {

	before(function() {
		nock('https://mattandre.ws')
			.get('/succeed.txt')
			.reply(200, good);
		nock('https://mattandre.ws')
			.get('/fail.txt')
			.reply(404, bad);
	});

	it('should be defined', function() {
		expect(fetch).to.be.a('function');
	});

	it('should facilitate the making of requests', function(done) {
		fetch('//mattandre.ws/succeed.txt')
			.then(responseToText)
			.then(function(data) {
				expect(data).to.equal(good);
				done();
			})
			.catch(done);
	});

	it('should do the right thing with bad requests', function(done) {
		fetch('//mattandre.ws/fail.txt')
			.then(responseToText)
			.catch(function(err) {
				expect(err.toString()).to.equal("Error: Bad server response");
				done();
			})
			.catch(done);
	});

});