aboutsummaryrefslogtreecommitdiffstats
path: root/batch.js
diff options
context:
space:
mode:
Diffstat (limited to 'batch.js')
-rw-r--r--batch.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/batch.js b/batch.js
new file mode 100644
index 00000000..69ae8fd5
--- /dev/null
+++ b/batch.js
@@ -0,0 +1,86 @@
+var chai = require('chai');
+var assert = chai.assert;
+var web3 = require('../index');
+var FakeHttpProvider = require('./helpers/FakeHttpProvider');
+var bn = require('bignumber.js');
+
+describe('lib/web3/batch', function () {
+ describe('execute', function () {
+ it('should execute batch request', function (done) {
+
+ var provider = new FakeHttpProvider();
+ web3.setProvider(provider);
+ web3.reset();
+
+ var result = '0x126';
+ var result2 = '0x127';
+ provider.injectBatchResults([result, result2]);
+
+ var counter = 0;
+ var callback = function (err, r) {
+ counter++;
+ assert.deepEqual(new bn(result), r);
+ };
+
+ var callback2 = function (err, r) {
+ assert.equal(counter, 1);
+ assert.deepEqual(new bn(result2), r);
+ done();
+ };
+
+ var batch = web3.createBatch();
+ batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
+ batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000005', 'latest', callback2));
+ batch.execute();
+ });
+
+ it('should execute batch request', function (done) {
+
+ var provider = new FakeHttpProvider();
+ web3.setProvider(provider);
+ web3.reset();
+
+ var abi = [{
+ "name": "balance(address)",
+ "type": "function",
+ "inputs": [{
+ "name": "who",
+ "type": "address"
+ }],
+ "constant": true,
+ "outputs": [{
+ "name": "value",
+ "type": "uint256"
+ }]
+ }];
+
+
+ var address = '0x0000000000000000000000000000000000000000';
+ var result = '0x126';
+ var result2 = '0x0000000000000000000000000000000000000000000000000000000000000123';
+ var signature = '0x001122334455';
+
+ // TODO: fix this, maybe in browser sha3?
+ provider.injectResult(signature);
+
+ var counter = 0;
+ var callback = function (err, r) {
+ counter++;
+ assert.deepEqual(new bn(result), r);
+ };
+
+ var callback2 = function (err, r) {
+ assert.equal(counter, 1);
+ assert.deepEqual(new bn(result2), r);
+ done();
+ };
+
+ var batch = web3.createBatch();
+ batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
+ batch.add(web3.eth.contract(abi).at(address).balance.request(address, callback2));
+ provider.injectBatchResults([result, result2]);
+ batch.execute();
+ });
+ });
+});
+