logos-storage-nim/tests/ethertest.nim
Eric 045f770128
All tests working, with no time advancement
- works with hardhat already running
- works with ethersuite to revert snapshot (ethProvider instead of provider)
- OnChainClock.now() gets latest block timestamp
2023-12-06 15:39:08 +11:00

33 lines
1.1 KiB
Nim

import pkg/asynctest
import pkg/ethers
import ./checktest
## Unit testing suite that sets up an Ethereum testing environment.
## Injects an `ethProvider` instance, and a list of `accounts`.
## Calls the `evm_snapshot` and `evm_revert` methods to ensure that any
## changes to the blockchain do not persist.
template ethersuite*(name, body) =
asyncchecksuite name:
# NOTE: `ethProvider` cannot be named `provider`, as there is an unknown
# conflict that is occurring within JsonRpcProvider in which the compiler cannot
# understand the `provider` symbol type when several layers of nested templates
# are involved, eg ethertest > multinodesuite > marketplacesuite > test
var ethProvider {.inject, used.}: JsonRpcProvider
var accounts {.inject, used.}: seq[Address]
var snapshot: JsonNode
setup:
ethProvider = JsonRpcProvider.new("ws://localhost:8545")
snapshot = await send(ethProvider, "evm_snapshot")
accounts = await ethProvider.listAccounts()
teardown:
discard await send(ethProvider, "evm_revert", @[snapshot])
body
export asynctest
export ethers except `%`