@yeutech-lab/test-polyfill
Version:
Configure unit test in jest using this polyfill. It provides fetch and localStorage within your test environment.
65 lines (50 loc) • 1.56 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.polyfill = polyfill;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var defaultOptions = {
isomorphicFetch: false,
fetch: true,
localStorage: true,
media: true
};
function polyfill(options) {
var opts = (0, _objectSpread2.default)({}, defaultOptions, options);
var root = null;
try {
root = window || global;
} catch (e) {
root = global;
}
if (opts.isomorphicFetch) {
var Tough = require('tough-cookie');
var Store = new Tough.MemoryCookieStore();
var rejectPublicSuffixes = false;
var cookieJar = new Tough.CookieJar(Store, rejectPublicSuffixes);
var fetch = require('fetch-cookie')(require('@yeutech-lab/isomorphic-fetch'), cookieJar);
root.fetch = fetch;
root.cookieJar = cookieJar;
}
if (opts.fetch && !opts.isomorphicFetch) {
require('whatwg-fetch');
root.fetchMock = require('fetch-mock');
}
if (opts.localStorage && !root.localStorage) {
root.localStorage = require('localStorage');
}
if (opts.media) {
root.matchMedia = root.matchMedia || function () {
return {
matches: false,
addListener: function addListener() {},
removeListener: function removeListener() {}
};
};
root.requestAnimationFrame = root.requestAnimationFrame || function (callback) {
setTimeout(callback, 0);
};
}
}