mirror of
https://github.com/embarklabs/embark.git
synced 2025-01-21 02:59:58 +00:00
f6f45077e9
When `eth_unsubscribe` is received in the proxy, ensure this request is forwarded through on the correct socket (the same socket that was used for the corresponding `eth_subscribe`). Move subscription handling for `eth_subscribe` and `eth_unsubscribe` to RpcModifiers (in `rpc-manager` package). For each `eth_subscribe` request, a new `RequestManager` is created. Since the endpoint property on the proxy class was updated to be a provider, the same provider was being assigned to each new `RequestManager` and thus creating multiple event handlers for each subscription created. To circumvent this, we are now creating a new provider for each `RequestManager`. Co-authored-by: Pascal Precht <pascal.precht@googlemail.com>
72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
/*global contract, config, it, assert, web3*/
|
|
const SimpleStorage = require('Embark/contracts/SimpleStorage');
|
|
let accounts;
|
|
const {Utils} = require('Embark/EmbarkJS');
|
|
|
|
config({
|
|
contracts: {
|
|
deploy: {
|
|
"SimpleStorage": {
|
|
args: [100],
|
|
onDeploy: (dependencies) => {
|
|
return dependencies.contracts.SimpleStorage.methods.setRegistar(dependencies.contracts.SimpleStorage.options.address).send();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, (err, theAccounts) => {
|
|
accounts = theAccounts;
|
|
});
|
|
|
|
contract("SimpleStorage", function() {
|
|
this.timeout(0);
|
|
|
|
it("should set constructor value", async function() {
|
|
let result = await SimpleStorage.methods.storedData().call();
|
|
assert.strictEqual(parseInt(result, 10), 100);
|
|
});
|
|
|
|
it("set storage value", function(done) {
|
|
Utils.secureSend(web3, SimpleStorage.methods.set(150), {}, false, async function(err) {
|
|
if (err) {
|
|
return done(err);
|
|
}
|
|
let result = await SimpleStorage.methods.get().call();
|
|
assert.strictEqual(parseInt(result, 10), 150);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should set to self address", async function() {
|
|
let result = await SimpleStorage.methods.registar().call();
|
|
assert.strictEqual(result, SimpleStorage.options.address);
|
|
});
|
|
|
|
it('should have the right defaultAccount', function() {
|
|
assert.strictEqual(accounts[0], web3.eth.defaultAccount);
|
|
});
|
|
|
|
it("should alias contract address", function() {
|
|
assert.strictEqual(SimpleStorage.options.address, SimpleStorage.address);
|
|
});
|
|
|
|
it('listens to events', function(done) {
|
|
SimpleStorage.once('EventOnSet2', async function(error, result) {
|
|
assert.strictEqual(error, null);
|
|
assert.strictEqual(parseInt(result.returnValues.setValue, 10), 150);
|
|
done(error);
|
|
});
|
|
|
|
SimpleStorage.methods.set2(150).send();
|
|
});
|
|
|
|
it('asserts event triggered', async function() {
|
|
const tx = await SimpleStorage.methods.set2(160).send();
|
|
assert.eventEmitted(tx, 'EventOnSet2', {passed: true, message: "hi", setValue: "160"});
|
|
});
|
|
|
|
it("should revert with a value lower than 5", async function() {
|
|
await assert.reverts(SimpleStorage.methods.set3(2), {from: web3.eth.defaultAccount}, 'Returned error: VM Exception while processing transaction: revert Value needs to be higher than 5');
|
|
});
|
|
});
|