linagora-rse
Version:
80 lines (68 loc) • 2.52 kB
JavaScript
;
var AwesomeModuleManagerProxy = require('awesome-module-manager/lib/manager-proxy');
function noop() {}
function consoleLogger() {
console.log.apply(console, arguments);
}
function TestLogger() {
}
TestLogger.prototype.info = noop;
TestLogger.prototype.warn = consoleLogger;
TestLogger.prototype.error = consoleLogger;
TestLogger.prototype.success = consoleLogger;
TestLogger.prototype.debug = noop;
module.exports = function(mixin, testEnv) {
var modules = {};
mixin.modules = modules;
modules.initMidway = function(moduleName, done) {
var moduleManager = testEnv.moduleManager || require('../backend/module-manager');
var logger = new TestLogger();
moduleManager.manager.logger = logger;
moduleManager.manager.stateManager.logger = logger;
moduleManager.manager.moduleStore.logger = logger;
moduleManager.manager.loader.logger = logger;
moduleManager.setupServerEnvironment();
moduleManager.manager.fire('lib', moduleName)
.then(
function() {
modules.current = {
lib: modules.getLib(moduleName),
deps: modules.getDeps(moduleName)
};
testEnv.initCore(done);
},
done
);
};
modules.getDeps = function(moduleName) {
var moduleManager = testEnv.moduleManager || require('../backend/module-manager');
var moduleStore = moduleManager.manager.moduleStore;
var module = moduleStore.get(moduleName);
if (!module) {
throw new Error('Module ' + moduleName + ' not found in the module manager. Maybe it is not loaded yet ?');
}
return new AwesomeModuleManagerProxy(module, moduleStore).getProxy();
};
modules.getLib = function(moduleName) {
var moduleManager = testEnv.moduleManager || require('../backend/module-manager');
var moduleStore = moduleManager.manager.moduleStore;
var module = moduleStore.get(moduleName);
if (!module) {
throw new Error('Module ' + moduleName + ' not found in the module manager. Maybe it is not loaded yet ?');
}
return module.getLib();
};
modules.getWebServer = function(app) {
var application = require(testEnv.basePath + '/backend/webserver/application');
application.use(app);
return application;
};
modules.start = function(moduleName, done) {
var moduleManager = testEnv.moduleManager || require('../backend/module-manager');
moduleManager.manager.fire('start', moduleName).then(function() {
done();
}, function(err) {
done(err);
});
};
};