rewiremock
Version:
Advanced dependency mocking device.
136 lines (113 loc) • 4.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._clearPlugins = exports.removePlugin = exports.addPlugin = exports.onEnable = exports.onDisable = exports.onMockCreate = exports.autoMock = exports.shouldMock = exports.shouldWipe = exports.convertName = undefined;
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _globals = require('./globals');
var _globals2 = _interopRequireDefault(_globals);
var _common = require('./plugins/_common');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var plugins = function plugins() {
var result = [];
var collect = function collect(scope) {
result.push.apply(result, (0, _toConsumableArray3.default)(scope.plugins));
if (scope.parentScope) {
collect(scope.parentScope);
}
};
collect((0, _globals2.default)());
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(_common.NO) >= 0) {
return false;
}
if (values.indexOf(_common.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) : _common.PASS;
}), true, result);
};
var shouldWipe = function shouldWipe(stubs, moduleName) {
return triResult(plugins().map(function (plugin) {
return plugin.wipeCheck ? plugin.wipeCheck(stubs, moduleName) : _common.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();
(0, _keys2.default)(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();
(0, _keys2.default)(mocks).forEach(function (mockName) {
var mock = mocks[mockName];
plugs.forEach(function (plugin) {
return plugin.onEnable && plugin.onEnable(mock._parent);
});
});
};
var addPlugin = function addPlugin(plugin) {
(0, _globals2.default)().plugins.push(plugin);
};
var removePlugin = function removePlugin(plugin) {
(0, _globals2.default)().plugins = (0, _globals2.default)().plugins.filter(function (plug) {
return plug !== plugin;
});
};
var _clearPlugins = function _clearPlugins() {
(0, _globals2.default)().plugins = [];
};
exports.convertName = convertName;
exports.shouldWipe = shouldWipe;
exports.shouldMock = shouldMock;
exports.autoMock = autoMock;
exports.onMockCreate = onMockCreate;
exports.onDisable = onDisable;
exports.onEnable = onEnable;
exports.addPlugin = addPlugin;
exports.removePlugin = removePlugin;
exports._clearPlugins = _clearPlugins;