var fs = require("fs"); var path = require("path"); var expect = require("chai").expect; var vm = require("vm"); before(function() { var basedir = path.join(__dirname, "../../.."); var fileName = "js/app.js"; var filePath = path.join(basedir, fileName); var code = fs.readFileSync(filePath); this.sandbox = { module: {}, __dirname: path.dirname(filePath), global: {}, console: { log: function() { /*console.log("console.log(", arguments, ")");*/ } }, process: { on: function() { /*console.log("process.on called with: ", arguments);*/ }, env: {} } }; this.sandbox.require = function(filename) { // This modifies the global slightly, // but supplies vm with essential code return require(filename); }; vm.runInNewContext(code, this.sandbox, fileName); }); after(function() { //console.log(global); }); describe("Default modules set in modules/default/defaultmodules.js", function() { var expectedDefaultModules = [ "alert", "calendar", "clock", "compliments", "currentweather", "helloworld", "newsfeed", "weatherforecast", "updatenotification" ]; expectedDefaultModules.forEach(defaultModule => { it(`contains default module "${defaultModule}"`, function() { expect(this.sandbox.defaultModules).to.include(defaultModule); }); }); expectedDefaultModules.forEach(defaultModule => { it(`contains a folder for modules/default/${defaultModule}"`, function() { expect(fs.existsSync(path.join(this.sandbox.global.root_path, "modules/default", defaultModule))).to.equal(true); }); }); });