UNPKG

@4c/fetch-mock

Version:

Mock http requests made using fetch (or isomorphic-fetch)

62 lines (46 loc) 1.59 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _repeat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/repeat")); var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign")); var generateMatcher = require('./generate-matcher'); var sanitizeRoute = function sanitizeRoute(route) { route = (0, _assign["default"])({}, route); if (route.method) { route.method = route.method.toLowerCase(); } route.identifier = route.name || route.matcher; return route; }; var validateRoute = function validateRoute(route) { if (!('response' in route)) { throw new Error('fetch-mock: Each route must define a response'); } if (!route.matcher) { throw new Error('fetch-mock: Each route must specify a string, regex or function to match calls to fetch'); } }; var limitMatcher = function limitMatcher(route) { if (!(0, _repeat["default"])(route)) { return; } var matcher = route.matcher; var timesLeft = (0, _repeat["default"])(route); route.matcher = function (url, options) { var match = timesLeft && matcher(url, options); if (match) { timesLeft--; return true; } }; route.reset = function () { return timesLeft = (0, _repeat["default"])(route); }; }; module.exports = function (route) { validateRoute(route); route = sanitizeRoute(route); route.matcher = generateMatcher(route); limitMatcher(route); return route; }; module.exports.sanitizeRoute = sanitizeRoute;