Use signature of functions instead of names (#3448)
* Use signature of functions instead of names #3411 * Fixes contract tests #3448
This commit is contained in:
parent
b5dedd8aeb
commit
20185e5aac
@ -40,9 +40,12 @@ export default class Contract {
|
||||
|
||||
this._events.forEach((evt) => {
|
||||
this._instance[evt.name] = evt;
|
||||
this._instance[evt.signature] = evt;
|
||||
});
|
||||
|
||||
this._functions.forEach((fn) => {
|
||||
this._instance[fn.name] = fn;
|
||||
this._instance[fn.signature] = fn;
|
||||
});
|
||||
|
||||
this._sendSubscriptionChanges();
|
||||
|
@ -20,6 +20,7 @@ import sinon from 'sinon';
|
||||
import { TEST_HTTP_URL, mockHttp } from '../../../test/mockRpc';
|
||||
|
||||
import Abi from '../../abi';
|
||||
import { sha3 } from '../util/sha3';
|
||||
|
||||
import Api from '../api';
|
||||
import Contract from './contract';
|
||||
@ -113,7 +114,13 @@ describe('api/contract/Contract', () => {
|
||||
]);
|
||||
contract.at('6789');
|
||||
|
||||
expect(Object.keys(contract.instance)).to.deep.equal(['Drained', 'balanceOf', 'address']);
|
||||
expect(Object.keys(contract.instance)).to.deep.equal([
|
||||
'Drained',
|
||||
/^(?:0x)(.+)$/.exec(sha3('Drained(uint256)'))[1],
|
||||
'balanceOf',
|
||||
/^(?:0x)(.+)$/.exec(sha3('balanceOf(address)'))[1].substr(0, 8),
|
||||
'address'
|
||||
]);
|
||||
expect(contract.address).to.equal('6789');
|
||||
});
|
||||
});
|
||||
|
@ -33,6 +33,7 @@ export default class InputQuery extends Component {
|
||||
inputs: PropTypes.array.isRequired,
|
||||
outputs: PropTypes.array.isRequired,
|
||||
name: PropTypes.string.isRequired,
|
||||
signature: PropTypes.string.isRequired,
|
||||
className: PropTypes.string
|
||||
}
|
||||
|
||||
@ -177,7 +178,7 @@ export default class InputQuery extends Component {
|
||||
|
||||
onClick = () => {
|
||||
const { values } = this.state;
|
||||
const { inputs, contract, name, outputs } = this.props;
|
||||
const { inputs, contract, name, outputs, signature } = this.props;
|
||||
|
||||
this.setState({
|
||||
isLoading: true,
|
||||
@ -187,7 +188,7 @@ export default class InputQuery extends Component {
|
||||
const inputValues = inputs.map(input => values[input.name]);
|
||||
|
||||
contract
|
||||
.instance[name]
|
||||
.instance[signature]
|
||||
.call({}, inputValues)
|
||||
.then(results => {
|
||||
if (outputs.length === 1) {
|
||||
|
@ -70,7 +70,7 @@ export default class Queries extends Component {
|
||||
}
|
||||
|
||||
renderInputQuery (fn) {
|
||||
const { abi, name } = fn;
|
||||
const { abi, name, signature } = fn;
|
||||
const { contract } = this.props;
|
||||
|
||||
return (
|
||||
@ -80,6 +80,7 @@ export default class Queries extends Component {
|
||||
inputs={ abi.inputs }
|
||||
outputs={ abi.outputs }
|
||||
name={ name }
|
||||
signature={ signature }
|
||||
contract={ contract }
|
||||
/>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user