162 lines
5.2 KiB
JavaScript
162 lines
5.2 KiB
JavaScript
|
/*globals describe, it*/
|
||
|
var ContractsManager = require('../lib/contracts.js');
|
||
|
var Logger = require('../lib/logger.js');
|
||
|
var assert = require('assert');
|
||
|
var fs = require('fs');
|
||
|
|
||
|
var readFile = function(file) {
|
||
|
return {filename: file, content: fs.readFileSync(file).toString()};
|
||
|
};
|
||
|
|
||
|
describe('embark.Contratcs', function() {
|
||
|
describe('simple', function() {
|
||
|
var contractsManager = new ContractsManager({
|
||
|
contractFiles: [
|
||
|
readFile('test/contracts/simple_storage.sol'),
|
||
|
readFile('test/contracts/token.sol')
|
||
|
],
|
||
|
contractsConfig: {
|
||
|
"gas": "auto",
|
||
|
"contracts": {
|
||
|
"Token": {
|
||
|
"args": [
|
||
|
100
|
||
|
]
|
||
|
},
|
||
|
"SimpleStorage": {
|
||
|
"args": [
|
||
|
200
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
logger: new Logger({})
|
||
|
});
|
||
|
|
||
|
describe('#build', function() {
|
||
|
it('generate contracts', function() {
|
||
|
contractsManager.build(function(err, result) {
|
||
|
if (err) {
|
||
|
throw err;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var contracts = contractsManager.listContracts();
|
||
|
assert.equal(contracts.length, 2);
|
||
|
|
||
|
assert.equal(contracts[0].deploy, true);
|
||
|
assert.deepEqual(contracts[0].args, [100]);
|
||
|
assert.equal(contracts[0].className, "Token");
|
||
|
assert.deepEqual(contracts[0].gas, 700000);
|
||
|
//assert.equal(contracts[0].gasPrice, []); // TODO: test this one
|
||
|
assert.equal(contracts[0].type, 'file');
|
||
|
//assert.equal(contracts[0].abiDefinition, '');
|
||
|
//assert.equal(contracts[0].code, '');
|
||
|
//assert.equal(contracts[0].runtimeBytecode, '');
|
||
|
|
||
|
assert.equal(contracts[1].deploy, true);
|
||
|
assert.deepEqual(contracts[1].args, [200]);
|
||
|
assert.equal(contracts[1].className, "SimpleStorage");
|
||
|
assert.deepEqual(contracts[1].gas, 700000);
|
||
|
//assert.equal(contracts[1].gasPrice, []); // TODO: test this one
|
||
|
assert.equal(contracts[1].type, 'file');
|
||
|
//assert.equal(contracts[1].abiDefinition, '');
|
||
|
//assert.equal(contracts[1].code, '');
|
||
|
//assert.equal(contracts[1].runtimeBytecode, '');
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('config with contract instances', function() {
|
||
|
var contractsManager = new ContractsManager({
|
||
|
contractFiles: [
|
||
|
readFile('test/contracts/simple_storage.sol'),
|
||
|
readFile('test/contracts/token_storage.sol')
|
||
|
],
|
||
|
contractsConfig: {
|
||
|
"gas": "auto",
|
||
|
"contracts": {
|
||
|
"TokenStorage": {
|
||
|
"args": [
|
||
|
100,
|
||
|
"$SimpleStorage"
|
||
|
]
|
||
|
},
|
||
|
"MySimpleStorage": {
|
||
|
"instanceOf": "SimpleStorage",
|
||
|
"args": [
|
||
|
300
|
||
|
]
|
||
|
},
|
||
|
"SimpleStorage": {
|
||
|
"args": [
|
||
|
200
|
||
|
]
|
||
|
},
|
||
|
"AnotherSimpleStorage": {
|
||
|
"instanceOf": "SimpleStorage"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
logger: new Logger({})
|
||
|
});
|
||
|
|
||
|
describe('#build', function() {
|
||
|
it('generate contracts', function() {
|
||
|
contractsManager.build(function(err, result) {
|
||
|
if (err) {
|
||
|
throw err;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var contracts = contractsManager.listContracts();
|
||
|
assert.equal(contracts.length, 4);
|
||
|
|
||
|
assert.equal(contracts[0].className, "MySimpleStorage");
|
||
|
assert.equal(contracts[1].className, "AnotherSimpleStorage");
|
||
|
assert.equal(contracts[2].className, "SimpleStorage");
|
||
|
assert.equal(contracts[3].className, "TokenStorage");
|
||
|
|
||
|
// TokenStorage
|
||
|
assert.equal(contracts[3].deploy, true);
|
||
|
assert.deepEqual(contracts[3].args, [100, '$SimpleStorage']);
|
||
|
assert.deepEqual(contracts[3].gas, 700000);
|
||
|
assert.equal(contracts[3].type, 'file');
|
||
|
//assert.equal(contracts[3].abiDefinition, '');
|
||
|
//assert.equal(contracts[3].code, '');
|
||
|
//assert.equal(contracts[3].runtimeBytecode, '');
|
||
|
|
||
|
var parentContract = contracts[2];
|
||
|
|
||
|
//MySimpleStorage
|
||
|
assert.equal(contracts[0].deploy, true);
|
||
|
assert.deepEqual(contracts[0].args, [300]);
|
||
|
assert.deepEqual(contracts[0].gas, 700000);
|
||
|
assert.equal(contracts[0].type, 'instance');
|
||
|
assert.equal(contracts[0].abiDefinition, parentContract.abiDefinition);
|
||
|
assert.equal(contracts[0].code, parentContract.code);
|
||
|
assert.equal(contracts[0].runtimeBytecode, parentContract.runtimeBytecode);
|
||
|
|
||
|
// SimpleStorage
|
||
|
assert.equal(contracts[2].deploy, true);
|
||
|
assert.deepEqual(contracts[2].args, [200]);
|
||
|
assert.deepEqual(contracts[2].gas, 700000);
|
||
|
assert.equal(contracts[2].type, 'file');
|
||
|
//assert.equal(contracts[2].abiDefinition, '');
|
||
|
//assert.equal(contracts[2].code, '');
|
||
|
//assert.equal(contracts[2].runtimeBytecode, '');
|
||
|
|
||
|
// AnotherSimpleStorage
|
||
|
assert.equal(contracts[1].deploy, true);
|
||
|
assert.deepEqual(contracts[1].args, [200]);
|
||
|
assert.deepEqual(contracts[1].gas, 700000);
|
||
|
assert.equal(contracts[1].type, 'instance');
|
||
|
assert.equal(contracts[1].abiDefinition, parentContract.abiDefinition);
|
||
|
assert.equal(contracts[1].code, parentContract.code);
|
||
|
assert.equal(contracts[1].runtimeBytecode, parentContract.runtimeBytecode);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|