embark-area-51/test/config.contracts.js

98 lines
3.4 KiB
JavaScript

var Config = require('../lib/config/config.js');
var Compiler = require('../lib/compiler.js');
var assert = require('assert');
var sinon = require('sinon');
require('mocha-sinon');
describe('embark.config.contracts', function() {
var _blockchainConfig = (new Config.Blockchain()).loadConfigFile('test/support/blockchain.yml');
var blockchainConfig = _blockchainConfig.config("development");
var compiler = new Compiler(_blockchainConfig);
describe('#loadConfigFile', function() {
it('should read and load yml file', function() {
var contractsConfig = new Config.Contracts(blockchainConfig, compiler);
contractsConfig.loadConfigFile('test/support/contracts.yml');
assert.equal(contractsConfig.contractConfig.hasOwnProperty('development'), true)
assert.equal(contractsConfig.contractConfig.hasOwnProperty('staging'), true)
});
it('should throw exception reading invalid file', function() {
assert.throws(function() { contractsConfig.loadConfigFile('test/support/invalid.yml') }, Error);
});
});
describe('#loadConfig', function() {
it('should load config', function() {
var contractsConfig = new Config.Contracts([], blockchainConfig, compiler);
var hsh = {
development: {},
staging: {}
};
contractsConfig.loadConfig(hsh);
assert.equal(contractsConfig.contractConfig.hasOwnProperty('development'), true)
assert.equal(contractsConfig.contractConfig.hasOwnProperty('staging'), true)
});
});
describe('#compileContracts', function() {
context("simple contracts", function() {
before(function() {
files = [
'test/support/contracts/simple_storage.sol',
'test/support/contracts/another_storage.sol'
]
contractsConfig = new Config.Contracts(blockchainConfig, compiler);
contractsConfig.loadConfigFile('test/support/contracts.yml');
contractsConfig.init(files);
contractsConfig.compileContracts();
});
it('add contracts to a list', function() {
assert.deepEqual(contractsConfig.all_contracts, [ "SimpleStorage", "AnotherStorage" ]);
});
});
context("contracts as arguments to other contracts", function() {
before(function() {
files = [
'test/support/contracts/wallet.sol',
'test/support/contracts/simple_storage.sol',
'test/support/contracts/another_storage.sol',
'test/support/contracts/wallets.sol'
]
contractsConfig = new Config.Contracts(blockchainConfig, compiler);
contractsConfig.loadConfigFile('test/support/arguments.yml');
contractsConfig.init(files);
contractsConfig.compileContracts('development');
});
it('add contracts to a list', function() {
assert.deepEqual(contractsConfig.all_contracts, [ "SimpleStorage", "AnotherStorage", "Wallet", "Wallets" ]);
});
});
context("contracts instances", function() {
before(function() {
files = [
'test/support/contracts/simple_storage.sol'
]
contractsConfig = new Config.Contracts(blockchainConfig, compiler);
contractsConfig.loadConfigFile('test/support/instances.yml');
contractsConfig.init(files);
contractsConfig.compileContracts('development');
});
it('add contracts to a list', function() {
assert.deepEqual(contractsConfig.all_contracts, [ "SimpleStorage", "BarStorage", "FooStorage" ]);
});
});
});
});