web3.js/test/async.js

133 lines
3.7 KiB
JavaScript
Raw Normal View History

2015-05-13 18:08:38 +02:00
var chai = require('chai');
var assert = chai.assert;
var Web3 = require('../src/index');
2015-05-13 18:08:38 +02:00
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
var web3 = new Web3();
2015-05-13 18:08:38 +02:00
// use sendTransaction as dummy
var method = 'call';
2015-05-13 18:08:38 +02:00
var tests = [{
2015-08-08 21:22:01 +02:00
input: {
'from': 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS',
'to': 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'
},
formattedInput: [{
2015-08-08 21:22:01 +02:00
'from': '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8',
'to': '0x00c5496aee77c1ba1f0854206a26dda82a81d6d8'
}, 'latest'],
2015-05-13 18:08:38 +02:00
result: '0xb',
formattedResult: '0xb',
call: 'eth_'+ method
}];
describe('async', function () {
tests.forEach(function (test, index) {
it('test callback: ' + index, function (done) {
2015-05-13 18:08:38 +02:00
// 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);
2015-05-13 18:08:38 +02:00
});
// when
2015-08-08 21:22:01 +02:00
web3.eth[method](test.input, function(error, result){
2015-05-13 18:08:38 +02:00
// then
assert.isNull(error);
assert.strictEqual(test.formattedResult, result);
2015-05-13 18:08:38 +02:00
done();
});
2015-05-13 18:08:38 +02:00
});
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) {
2015-05-13 18:08:38 +02:00
// 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);
2015-05-13 18:08:38 +02:00
});
// when
2015-08-08 21:22:01 +02:00
web3.eth[method](test.input, function(error, result){
2015-05-13 18:08:38 +02:00
// 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);
2015-05-13 18:08:38 +02:00
done();
});
2015-05-13 18:08:38 +02:00
});
});
});