UNPKG

rewiremock

Version:

Advanced dependency mocking device.

136 lines (113 loc) 4.01 kB
'use strict'; 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;