laconicd/tests-solidity/suites/staking/test/helpers/deploy.js
Brett Sun c9639c3860
tests: add solidity test suites (#487)
* tests: add solidity test suite

* tests: remove require strings

* Update tests-solidity/init-test-node.sh

* Update tests-solidity/init-test-node.sh

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2020-09-01 17:16:28 -04:00

36 lines
1.1 KiB
JavaScript

const { bn } = require('@aragon/contract-helpers-test/numbers')
const { DEFAULT_STAKE_AMOUNT } = require('./constants')
module.exports = (artifacts) => {
const StakingFactory = artifacts.require('StakingFactory')
const Staking = artifacts.require('Staking')
const StandardTokenMock = artifacts.require('StandardTokenMock')
const LockManagerMock = artifacts.require('LockManagerMock')
const getEvent = (receipt, event, arg) => { return receipt.logs.filter(l => l.event === event)[0].args[arg] }
const deploy = async (owner, initialAmount = DEFAULT_STAKE_AMOUNT.mul(bn(1000))) => {
const token = await StandardTokenMock.new(owner, initialAmount)
const staking = await deployStaking(token)
const lockManager = await LockManagerMock.new()
return { token, staking, lockManager }
}
const deployStaking = async (token) => {
const factory = await StakingFactory.new()
const receipt = await factory.getOrCreateInstance(token.address)
const stakingAddress = getEvent(receipt, 'NewStaking', 'instance')
const staking = await Staking.at(stakingAddress)
return staking
}
return {
deploy
}
}