lore
Version:
Convention-driven framework for building React-Redux applications
64 lines (50 loc) • 1.58 kB
JavaScript
var _ = require('lodash');
var sinon = require('sinon');
// The loaders we're stubbing out
var loaders = {
actions: require('../../src/loaders/actions'),
collections: require('../../src/loaders/collections'),
connections: { load: function(){} },
config: require('../../src/loaders/config'),
models: require('../../src/loaders/models'),
reducers: require('../../src/loaders/reducers'),
userHooks: require('../../src/loaders/userHooks'),
initializers: require('../../src/loaders/initializers')
};
function LoaderHelper() {
}
_.extend(LoaderHelper.prototype, {
// Stub everything out - blank canvas, nothing gets loaded or exists
init: function() {
var emptyStubs = _.reduce(loaders, function(stubs, value, loaderName) {
stubs[loaderName] = {};
return stubs;
}, {});
this.stub(emptyStubs);
},
// Stub out the loaders with the provided response
stub: function(stubs) {
_.mapKeys(stubs, function(loaderResponse, loaderName) {
var loader = loaders[loaderName];
if (!loader) {
throw new Error('No loader found with the name ' + loaderName);
}
if (loader.load.restore) {
loader.load.restore();
}
sinon.stub(loader, 'load', function() {
return loaderResponse;
});
});
},
// Restore all stubs back to the real files
restore: function() {
_.keys(loaders, function(loaderName) {
var loader = loaders[loaderName];
if (loader.load.restore) {
loader.load.restore();
}
});
}
});
module.exports = new LoaderHelper();