diff --git a/boilerplate/test/contract_spec.js b/boilerplate/test/contract_spec.js index e0a6a9dc3..51518358f 100644 --- a/boilerplate/test/contract_spec.js +++ b/boilerplate/test/contract_spec.js @@ -1,6 +1,7 @@ var assert = require('assert'); -var EmbarkSpec = require('embark/lib/core/test.js'); - +var Embark = require('embark'); +var EmbarkSpec = Embark.initTests(); +var web3 = EmbarkSpec.web3; // describe("SimpleStorage", function() { // before(function(done) { @@ -29,4 +30,4 @@ var EmbarkSpec = require('embark/lib/core/test.js'); // }); // }); // -// }); \ No newline at end of file +// }); diff --git a/lib/core/engine.js b/lib/core/engine.js index aecee563a..1b00b4ec3 100644 --- a/lib/core/engine.js +++ b/lib/core/engine.js @@ -22,7 +22,7 @@ class Engine { let self = this; let options = _options || {}; this.events = new Events(); - this.logger = options.logger || new Logger({logLevel: 'debug'}); + this.logger = options.logger || new Logger({logLevel: options.logLevel || 'debug'}); this.config = new Config({env: this.env, logger: this.logger, events: this.events}); this.config.loadConfigFiles({embarkConfig: this.embarkConfig, interceptLogs: this.interceptLogs}); this.plugins = this.config.plugins; diff --git a/lib/core/runCode.js b/lib/core/runCode.js index 765bd2658..6c89be039 100644 --- a/lib/core/runCode.js +++ b/lib/core/runCode.js @@ -8,7 +8,7 @@ let web3; // ====================== function doEval(code, _web3) { if (_web3) { - let web3 = _web3; + web3 = _web3; } return eval(code); // jshint ignore:line } diff --git a/lib/core/test.js b/lib/core/test.js index 1c32120d2..39346762e 100644 --- a/lib/core/test.js +++ b/lib/core/test.js @@ -1,6 +1,23 @@ -let getSimulator = function () { +var async = require('async'); +var Web3 = require('web3'); + +var Embark = require('../index.js'); + +var Engine = require('./engine.js'); + +var ABIGenerator = require('../contracts/abi.js'); +var ContractsManager = require('../contracts/contracts.js'); +var Deploy = require('../contracts/deploy.js'); + +var Config = require('./config.js'); +var RunCode = require('./runCode.js'); +var TestLogger = require('./test_logger.js'); +var web3; + +var getSimulator = function() { try { - return require('ethereumjs-testrpc'); + var sim = require('ethereumjs-testrpc'); + return sim; } catch (e) { if (e.code === 'MODULE_NOT_FOUND') { console.log('Simulator not found; Please install it with "npm install ethereumjs-testrpc --save"'); @@ -17,25 +34,70 @@ let getSimulator = function () { } }; +var Test = function(options) { + this.options = options || {}; + var simOptions = this.options.simulatorOptions || {}; -class Test { - constructor(options) { - this.opts = options === undefined ? {} : options; - this.opts.logLevel = this.opts.hasOwnProperty('logLevel') ? this.opts.logLevel : 'debug'; - this.opts.simulatorOptions = this.opts.hasOwnProperty('simulatorOptions') ? this.opts.simulatorOptions : {}; - this.sim = getSimulator(); - } + this.engine = new Engine({ + env: this.options.env || 'test', + // TODO: confi will need to detect if this is a obj + embarkConfig: this.options.embarkConfig || 'embark.json', + interceptLogs: false + }); - newWebThree() { - try { - let Web3 = require('web3'); - let web3 = new Web3(); - web3.setProvider(this.sim.provider(this.opts.simulatorOptions)); - return web3; - } catch (e) { - throw new Error(e); + this.engine.init({ + logger: new TestLogger({logLevel: 'debug'}) + }); + + this.sim = getSimulator(); + this.web3 = new Web3(); + this.web3.setProvider(this.sim.provider(simOptions)); +}; + +Test.prototype.deployAll = function(contractsConfig, cb) { + var self = this; + + async.waterfall([ + function getConfig(callback) { + self.engine.config.contractsConfig = {contracts: contractsConfig}; + callback(); + }, + function startServices(callback) { + //{abiType: 'contracts', embarkJS: false} + self.engine.startService("abi"); + self.engine.startService("deployment", { + web3: self.web3, + trackContracts: false + }); + callback(); + }, + function deploy(callback) { + self.engine.events.on('abi-contracts-vanila', function(vanillaABI) { + callback(null, vanillaABI); + }); + self.engine.deployManager.deployContracts(function(err, result) { + if (err) { + console.log(err); + callback(err); + } + }); + } + ], function(err, result) { + if (err) { + console.log("got error"); + process.exit(); } - } -} + // this should be part of the waterfall and not just something done at the + // end + self.web3.eth.getAccounts(function(err, accounts) { + if (err) { + throw new Error(err); + } + self.web3.eth.defaultAccount = accounts[0]; + RunCode.doEval(result, self.web3); // jshint ignore:line + cb(); + }); + }); +}; module.exports = Test; diff --git a/lib/index.js b/lib/index.js index cc12a1303..109a532fe 100644 --- a/lib/index.js +++ b/lib/index.js @@ -197,4 +197,10 @@ class Embark { } +// temporary until next refactor +Embark.initTests = function(options) { + let Test = require('./core/test.js'); + return new Test(options); +} + module.exports = Embark; diff --git a/test_app/test/another_storage_spec.js b/test_app/test/another_storage_spec.js index b60297b57..d0e90c60d 100644 --- a/test_app/test/another_storage_spec.js +++ b/test_app/test/another_storage_spec.js @@ -1,5 +1,7 @@ var assert = require('assert'); -var EmbarkSpec = require('embark/lib/core/test.js'); +var Embark = require('embark'); +var EmbarkSpec = Embark.initTests(); +var web3 = EmbarkSpec.web3; describe("AnotherStorage", function() { before(function(done) { diff --git a/test_app/test/simple_storage_spec.js b/test_app/test/simple_storage_spec.js index b330ced62..b2d3cb178 100644 --- a/test_app/test/simple_storage_spec.js +++ b/test_app/test/simple_storage_spec.js @@ -1,5 +1,7 @@ var assert = require('assert'); -var EmbarkSpec = require('embark/lib/core/test.js'); +var Embark = require('embark'); +var EmbarkSpec = Embark.initTests(); +var web3 = EmbarkSpec.web3; describe("SimpleStorage", function() { before(function(done) { diff --git a/test_app/test/token_spec.js b/test_app/test/token_spec.js index 93eb28b5f..362ce058b 100644 --- a/test_app/test/token_spec.js +++ b/test_app/test/token_spec.js @@ -1,5 +1,7 @@ var assert = require('assert'); -var EmbarkSpec = require('embark/lib/core/test.js'); +var Embark = require('embark'); +var EmbarkSpec = Embark.initTests(); +var web3 = EmbarkSpec.web3; describe("Token", function() { before(function(done) {