Skip to content

Commit

Permalink
add extend method and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
frozeman committed Jun 4, 2015
1 parent 61f1ba6 commit 733e19e
Show file tree
Hide file tree
Showing 8 changed files with 453 additions and 110 deletions.
146 changes: 93 additions & 53 deletions dist/web3-light.js

Large diffs are not rendered by default.

85 changes: 85 additions & 0 deletions dist/web3-light.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/web3-light.min.js

Large diffs are not rendered by default.

146 changes: 93 additions & 53 deletions dist/web3.js

Large diffs are not rendered by default.

85 changes: 85 additions & 0 deletions dist/web3.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/web3.min.js

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions lib/web3.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,23 @@ Object.defineProperty(web3.eth, 'defaultAccount', {
}
});


// EXTEND
web3.extend = function(extension){
if(!web3[extension.property])
web3[extension.property] = {};

if(extension.methods)
setupMethods(extension.property ? web3[extension.property] : web3, extension.methods);
if(extension.properties)
setupProperties(extension.property ? web3[extension.property] : web3, extension.properties);
};
web3.extend.formatters = formatters;
web3.extend.utils = utils;
web3.extend.Method = require('./web3/method');
web3.extend.Property = require('./web3/property');


/// setups all api methods
setupProperties(web3, web3Properties);
setupMethods(web3.net, net.methods);
Expand Down
76 changes: 76 additions & 0 deletions test/web3.extend.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
var chai = require('chai');
var assert = chai.assert;
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
var web3 = require('../lib/web3');


var tests = [{
properties: [new web3.extend.Property({
name: 'gasPrice',
getter: 'eth_gasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
})]
},{
methods: [new web3.extend.Method({
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.utils.toAddress, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
})]
},{
property: 'admin',
properties: [new web3.extend.Property({
name: 'gasPrice',
getter: 'eth_gasPrice',
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
})],
methods: [new web3.extend.Method({
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.utils.toAddress, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.extend.formatters.outputBigNumberFormatter
})]
}];

describe('web3', function () {
describe('extend', function () {
tests.forEach(function (test, index) {
it('test no: ' + index, function () {
web3.extend(test);


if(test.properties)
test.properties.forEach(function(property){

var provider = new FakeHttpProvider();
web3.setProvider(provider);
provider.injectResult('');
provider.injectValidation(function (payload) {
assert.equal(payload.jsonrpc, '2.0');
assert.equal(payload.method, property.getter);
});

if(test.property) {
assert.isObject(web3[test.property][property.name]);
assert.isFunction(web3[test.property]['get'+ property.name.charAt(0).toUpperCase() + property.name.slice(1)]);
} else {
assert.isObject(web3[property.name]);
assert.isFunction(web3['get'+ property.name.charAt(0).toUpperCase() + property.name.slice(1)]);
}
});

if(test.methods)
test.methods.forEach(function(property){
if(test.property)
assert.isFunction(web3[test.property][property.name]);
else
assert.isFunction(web3[property.name]);
});

});
});
});
});

0 comments on commit 733e19e

Please sign in to comment.