web3.js/test/async.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

133 lines
3.7 KiB
JavaScript

var chai = require('chai');
var assert = chai.assert;
var Web3 = require('../src/index');
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
var web3 = new Web3();
// use sendTransaction as dummy
var method = 'call';
var tests = [{
input: {
'from': 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS',
'to': 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'
},
formattedInput: [{
'from': '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8',
'to': '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'
}, 'latest'],
result: '0xb',
formattedResult: '0xb',
call: 'eth_'+ method
}];
describe('async', function () {
tests.forEach(function (test, index) {
it('test callback: ' + index, function (done) {
// given
var provider = new FakeHttpProvider();
web3.setProvider(provider);
provider.injectResult(test.result);
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, test.call);
assert.deepEqual(payload.params, test.formattedInput);
});
// when
web3.eth[method](test.input, function(error, result){
// then
assert.isNull(error);
assert.strictEqual(test.formattedResult, result);
done();
});
});
it('test promise: ' + index, function (done) {
// given
var provider = new FakeHttpProvider();
web3.setProvider(provider);
provider.injectResult(test.result);
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, test.call);
assert.deepEqual(payload.params, test.formattedInput);
});
// when
web3.eth[method](test.input)
.then(function(result){
// then
assert.strictEqual(test.formattedResult, result);
done();
});
});
it('error test callback: ' + index, function (done) {
// given
var provider = new FakeHttpProvider();
web3.setProvider(provider);
provider.injectError({
message: test.result,
code: -32603
});
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, test.call);
assert.deepEqual(payload.params, test.formattedInput);
});
// when
web3.eth[method](test.input, function(error, result){
// then
assert.isUndefined(result);
assert.strictEqual(test.formattedResult, error.message);
done();
}).catch(function () {
});
});
it('error test promise: ' + index, function (done) {
// given
var provider = new FakeHttpProvider();
web3.setProvider(provider);
provider.injectError({
message: test.result,
code: -32603
});
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, test.call);
assert.deepEqual(payload.params, test.formattedInput);
});
// when
web3.eth[method](test.input)
.catch(function(error){
// then
assert.strictEqual(test.formattedResult, error.message);
done();
});
});
});
});