add extend method and tests
This commit is contained in:
parent
61f1ba6dda
commit
733e19e474
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
17
lib/web3.js
17
lib/web3.js
|
@ -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
|
/// setups all api methods
|
||||||
setupProperties(web3, web3Properties);
|
setupProperties(web3, web3Properties);
|
||||||
setupMethods(web3.net, net.methods);
|
setupMethods(web3.net, net.methods);
|
||||||
|
|
|
@ -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]);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in New Issue