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._events.forEach((evt) => {
|
||||||
this._instance[evt.name] = evt;
|
this._instance[evt.name] = evt;
|
||||||
|
this._instance[evt.signature] = evt;
|
||||||
});
|
});
|
||||||
|
|
||||||
this._functions.forEach((fn) => {
|
this._functions.forEach((fn) => {
|
||||||
this._instance[fn.name] = fn;
|
this._instance[fn.name] = fn;
|
||||||
|
this._instance[fn.signature] = fn;
|
||||||
});
|
});
|
||||||
|
|
||||||
this._sendSubscriptionChanges();
|
this._sendSubscriptionChanges();
|
||||||
|
@ -20,6 +20,7 @@ import sinon from 'sinon';
|
|||||||
import { TEST_HTTP_URL, mockHttp } from '../../../test/mockRpc';
|
import { TEST_HTTP_URL, mockHttp } from '../../../test/mockRpc';
|
||||||
|
|
||||||
import Abi from '../../abi';
|
import Abi from '../../abi';
|
||||||
|
import { sha3 } from '../util/sha3';
|
||||||
|
|
||||||
import Api from '../api';
|
import Api from '../api';
|
||||||
import Contract from './contract';
|
import Contract from './contract';
|
||||||
@ -113,7 +114,13 @@ describe('api/contract/Contract', () => {
|
|||||||
]);
|
]);
|
||||||
contract.at('6789');
|
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');
|
expect(contract.address).to.equal('6789');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -33,6 +33,7 @@ export default class InputQuery extends Component {
|
|||||||
inputs: PropTypes.array.isRequired,
|
inputs: PropTypes.array.isRequired,
|
||||||
outputs: PropTypes.array.isRequired,
|
outputs: PropTypes.array.isRequired,
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
|
signature: PropTypes.string.isRequired,
|
||||||
className: PropTypes.string
|
className: PropTypes.string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,7 +178,7 @@ export default class InputQuery extends Component {
|
|||||||
|
|
||||||
onClick = () => {
|
onClick = () => {
|
||||||
const { values } = this.state;
|
const { values } = this.state;
|
||||||
const { inputs, contract, name, outputs } = this.props;
|
const { inputs, contract, name, outputs, signature } = this.props;
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
isLoading: true,
|
isLoading: true,
|
||||||
@ -187,7 +188,7 @@ export default class InputQuery extends Component {
|
|||||||
const inputValues = inputs.map(input => values[input.name]);
|
const inputValues = inputs.map(input => values[input.name]);
|
||||||
|
|
||||||
contract
|
contract
|
||||||
.instance[name]
|
.instance[signature]
|
||||||
.call({}, inputValues)
|
.call({}, inputValues)
|
||||||
.then(results => {
|
.then(results => {
|
||||||
if (outputs.length === 1) {
|
if (outputs.length === 1) {
|
||||||
|
@ -70,7 +70,7 @@ export default class Queries extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderInputQuery (fn) {
|
renderInputQuery (fn) {
|
||||||
const { abi, name } = fn;
|
const { abi, name, signature } = fn;
|
||||||
const { contract } = this.props;
|
const { contract } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -80,6 +80,7 @@ export default class Queries extends Component {
|
|||||||
inputs={ abi.inputs }
|
inputs={ abi.inputs }
|
||||||
outputs={ abi.outputs }
|
outputs={ abi.outputs }
|
||||||
name={ name }
|
name={ name }
|
||||||
|
signature={ signature }
|
||||||
contract={ contract }
|
contract={ contract }
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user