embark/dapps/tests/app
Pascal Precht b4478a9c46 fix(@embark/ens): don't change shape of Smart Contract args in action hooks
This commit fixes the issue that it wasn't possible anymore to use named constructor arguments
in Smart Contract configurations.

For example, the following Smart Contract expects two constructor arguments:

```solidity
contract SomeContract {
  constructor(address[] _addresses, int initialValue) public {}
}
```

The first being a list of addresses, the second one a number. This can be configured as:

```js
SomeContract: {
  args: [
    ["$MyToken2", "$SimpleStorage"],
    123
  ]
}
```

Notice how the order of arguments matters here. `_addresses` come first in the constructor,
so they have to be defined first in the configuration as well.

Another way to configure this is using named arguments, which is what's broken prior to this commit:

```js
SomeContract: {
  args: {
    initialValue: 123,
    _addresses: ["$MyToken2", "$SimpleStorage"]
  }
}
```

Using a notation like this ^ the order no longer matters as Embark will figure out the right
values for the constructor arguments by their names.

The reason this is broken is because there are several modules in Embark that register and
run a `deployment:contract:beforeDeploy` action, which are allowed to mutate this configuration
object. One of those modules is the `ens` module, which searches for ENS names in the arguments
and figure out whether it has to replace it with a resolved address.

One thing that particular module didn't take into account is that `args` could be either and
array, or an object and will always return an array, changing the shape of `args` in case it was
an object.

This is a problem because another module, `ethereum-blockchain-client`, another action is registered
that takes this mutated object in `determineArguments()` and ensure that, if `args` is actually an
object, the values are put in the correct position matching the constructor of the Smart Contract in
question.

One way to solve this was to use the newly introduced [priority](https://github.com/embark-framework/embark/pull/2031) and ensure
that `ens` action is executed after `ethereum-blockchain-client`'s.

However, the actual bug here is that the ENS module changes the shape of `args` in the first place,
so this commit ensures that it preserves it.
2019-11-11 14:01:48 -05:00
..
another_folder build: make DApp templates member packages of the monorepo 2019-03-05 10:20:57 -06:00
app fix(@embark/dapps): add missing Smart Contract configurations 2019-11-06 13:16:44 +01:00
config fix(@embark/ens): don't change shape of Smart Contract args in action hooks 2019-11-11 14:01:48 -05:00
some_folder build: make DApp templates member packages of the monorepo 2019-03-05 10:20:57 -06:00
test fix(@embark/accounts-manager): limit funding accounts to 1 at a time 2019-11-08 08:46:32 -05:00
.npmrc build: make DApp templates member packages of the monorepo 2019-03-05 10:20:57 -06:00
CHANGELOG.md chore(release): 5.0.0-alpha.1 2019-11-05 14:55:06 -06:00
README.md build: tidy up the monorepo in prep for v5.0.0-alpha.0 2019-10-01 13:29:53 -05:00
embark.json refactor(@embark/library-manager): restrict versionable packages to only solc 2019-11-08 11:27:20 -06:00
package.json chore(release): 5.0.0-alpha.1 2019-11-05 14:55:06 -06:00
test.file build: make DApp templates member packages of the monorepo 2019-03-05 10:20:57 -06:00

README.md

embark-dapp-test-app

Test DApp for integration testing purposes

In the top-level of the monorepo

yarn globalize to make development embark available on the global PATH.

In this directory

embark run to check if everything is behaving as expected.

embark test to see tests are working as expected.

Visit embark.status.im to get started with Embark.