36 lines
1.1 KiB
JavaScript
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
|
||
|
}
|
||
|
}
|