52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
|
/*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);
|
||
|
});
|
||
|
|
||
|
});
|