rewiremock
Version:
Advanced dependency mocking device.
109 lines (94 loc) • 3.17 kB
JavaScript
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
import getScope from './globals';
import { YES, NO, PASS } from './plugins/_common';
var plugins = function plugins() {
var result = [];
var collect = function collect(scope) {
result.push.apply(result, _toConsumableArray(scope.plugins));
if (scope.parentScope) {
collect(scope.parentScope);
}
};
collect(getScope());
return result;
};
var convertName = function convertName(fileName, parentModule) {
var resultName = plugins().reduce(function (name, plugin) {
if (plugin.fileNameTransformer) {
return plugin.fileNameTransformer(name, parentModule) || name;
}
return name;
}, fileName);
if (typeof __webpack_modules__ !== 'undefined') {
if (resultName[0] !== '.') {
return '.' + resultName;
}
}
return resultName;
};
var triResult = function triResult(values, defaultValue, storeResult) {
if (storeResult) {
storeResult.values = values;
storeResult.plugins = plugins();
}
if (values.indexOf(NO) >= 0) {
return false;
}
if (values.indexOf(YES) >= 0) {
return true;
}
return defaultValue;
};
var shouldMock = function shouldMock(mock, request, parent, topModule, result) {
return mock.disabled ? false : triResult(plugins().map(function (plugin) {
return plugin.shouldMock ? plugin.shouldMock(mock, request, parent, topModule) : PASS;
}), true, result);
};
var shouldWipe = function shouldWipe(stubs, moduleName) {
return triResult(plugins().map(function (plugin) {
return plugin.wipeCheck ? plugin.wipeCheck(stubs, moduleName) : PASS;
}), false);
};
var autoMock = function autoMock(moduleName) {
return plugins().reduce(function (result, plugin) {
return result || plugin.autoMock && plugin.autoMock(moduleName);
}, false);
};
var onMockCreate = function onMockCreate(mock) {
return plugins().reduce(function (mock, plugin) {
if (plugin.onMockCreate) {
return plugin.onMockCreate(mock) || mock;
}
return mock;
}, mock);
};
var onDisable = function onDisable(mocks) {
var plugs = plugins();
Object.keys(mocks).forEach(function (mockName) {
var mock = mocks[mockName];
plugs.forEach(function (plugin) {
return plugin.onDisable && plugin.onDisable(mock._parent);
});
});
};
var onEnable = function onEnable(mocks) {
var plugs = plugins();
Object.keys(mocks).forEach(function (mockName) {
var mock = mocks[mockName];
plugs.forEach(function (plugin) {
return plugin.onEnable && plugin.onEnable(mock._parent);
});
});
};
var addPlugin = function addPlugin(plugin) {
getScope().plugins.push(plugin);
};
var removePlugin = function removePlugin(plugin) {
getScope().plugins = getScope().plugins.filter(function (plug) {
return plug !== plugin;
});
};
var _clearPlugins = function _clearPlugins() {
getScope().plugins = [];
};
export { convertName, shouldWipe, shouldMock, autoMock, onMockCreate, onDisable, onEnable, addPlugin, removePlugin, _clearPlugins };