web3.js/test/web3.extend.js
Fabian Vogelsteller bbfefb091c Modularize web3.js (#541)
* added sub packages

* added lerna monopackage management

* check for package is instance

* added method, subscription and utils package

* moved almost all packages

* moved all packages, no umbrella package yet

* added extend to packages

* made contract pass

* made batch tests pass

* expose providers

* fixed test async

* fixed test errors

* fixed test event encode decode

* fixed test formatter tests

* fixed method tests

* fixed method utils

* fixed some eth methods

* fixed some eth methods 2

* bumped version 0.18.3 to republish meteor package

* fixed get* tests

* fixed subscribe tests

* added newBlockHeaders subscription

* remove unpublished package from package.json

* added sendTransaction test

* fixed call test

* moved files to done

* changed extend

* added iban tests

* Fixed ALL tests

* Fixed lint tests

* Fixed contract tests

* added method tests

* added more method tests to test promiEvents extensively

* added confirmation event

* improved method confirmation checking
2017-01-26 10:24:14 +01:00

93 lines
2.8 KiB
JavaScript

var chai = require('chai');
var assert = chai.assert;
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
var Web3 = require('../src/index');
var web3 = new Web3();
var tests = [{
methods: [{
name: 'getGasPrice',
call: 'eth_gasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
},{
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.utils.toAddress, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
}]
},{
property: 'admin',
methods: [{
name: 'getGasPrice',
call: 'eth_gasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
},{
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.utils.toAddress, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
}]
},{
error: true,
methods: [{
name: 'getGasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
}]
},{
error: true,
methods: [{
call: 'eth_gasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
}]
}];
describe('web3', function () {
describe('extend', function () {
tests.forEach(function (test, index) {
it('test no: ' + index, function (done) {
var count = 1;
var provider = new FakeHttpProvider();
web3.setProvider(provider);
if(test.error) {
assert.throws(web3.extend.bind(web3,test));
return done();
} else {
web3.extend(test);
}
if(test.methods)
test.methods.forEach(function(property){
provider.injectResult('0x1234');
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, property.call);
if(test.methods.length === count)
done();
else
count++;
});
if(test.property) {
assert.isFunction(web3[test.property][property.name]);
web3[test.property][property.name]();
} else {
assert.isFunction(web3[property.name]);
web3[property.name]();
}
});
});
});
});
});