pit("can set a condition which is returned by fetch", () => {
var MockFetch = require('../MockFetch.js');
MockFetch.when('GET', 'http://mydomain.com').respondWith(200, '"Hello World"');
return fetch('GET', 'http://mydomain.com').then((response) => {
return response.json();
}).then((data) => {
expect(data).toBe('Hello World');
});
});
pit("only responds when matched correctly", () => {
var MockFetch = require('mock-fetch-api');
MockFetch.when('GET', 'http://mydomain.com').respondWith(200, '"Hello World"');
return fetch('http://mydomain.com', { method: 'PUT'}).then((response) => {
expect(response.status).toBe(404);
expect(response.statusText).toBe('Not Found');
});
});
pit("also checks for an expected header value", () => {
var MockFetch = require('../MockFetch.js');
MockFetch.when('GET', 'http://mydomain.com')
.withExpectedHeader('X-AuthToken','1234')
.otherwiseRespondWith(401, "Not Authorized")
.respondWith(200, '"Hello World"');
return fetch('http://mydomain.com', { method: 'GET', headers: new Headers({
'X-AuthToken':'1234'
})}).then((response) => {
expect(response.status).toBe(200);
});
});
pit("fails when expected header is not set", () => {
var MockFetch = require('../MockFetch.js');
MockFetch.when('GET', 'http://mydomain.com')
.withExpectedHeader({'X-AuthToken':'1234'}).otherwiseRespondWith(401, "Not Authorized")
.respondWith(200, '"Hello World"');
return fetch('http://mydomain.com', { method: 'GET'}).then((response) => {
expect(response.status).toBe(401);
expect(response.statusText).toBe('Not Authorized');
});
});
pit("can check for multiple expected headers", () => {
var MockFetch = require('../MockFetch.js');
MockFetch.when('GET', 'http://mydomain.com')
.withExpectedHeader('X-AuthToken','1234').otherwiseRespondWith(401, "Not Authorized")
.withExpectedHeader('Content-Type', 'application/json').otherwiseRespondWith(404, "Not Found")
.respondWith(200, '"Hello World"');
return fetch('http://mydomain.com', { method: 'GET', headers: new Headers({
'X-AuthToken':'1234',
'Content-Type': 'application/json'
})}).then((response) => {
expect(response.status).toBe(200);
});
});
pit("rejects the promise when simulating a failed network connection", () => {
var MockFetch = require('../MockFetch.js');
MockFetch.when('GET', 'http://mydomain.com')
.respondWith(200, '"Hello World"');
MockFetch.failNextCall();
return fetch('http://mydomain.com').then((response) => {
expect(false).toBe(true);
}, (error) => {
expect(true).toBe(true);
});
});