48 lines
1.8 KiB
JavaScript
48 lines
1.8 KiB
JavaScript
|
const Staking = artifacts.require('Staking')
|
||
|
const StakingProxy = artifacts.require('StakingProxy')
|
||
|
const StandardTokenMock = artifacts.require('StandardTokenMock')
|
||
|
|
||
|
contract('StakingProxy', ([_, owner]) => {
|
||
|
let proxy, token, implementation
|
||
|
|
||
|
const FORWARDING_TYPE = 1
|
||
|
|
||
|
beforeEach('deploy sample token and staking implementation', async () => {
|
||
|
token = await StandardTokenMock.new(owner, 100000, { from: owner })
|
||
|
implementation = await Staking.new()
|
||
|
proxy = await StakingProxy.new(implementation.address, token.address)
|
||
|
})
|
||
|
|
||
|
describe('initialize', async () => {
|
||
|
it('initializes the given implementation', async () => {
|
||
|
const staking = await Staking.at(proxy.address)
|
||
|
assert(await staking.hasInitialized(), 'should have been initialized')
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('implementation', async () => {
|
||
|
it('uses an unstructured storage slot for the implementation address', async () => {
|
||
|
const implementationAddress = await web3.eth.getStorageAt(proxy.address, web3.utils.sha3('aragon.network.staking'))
|
||
|
assert.equal(implementationAddress.toLowerCase(), implementation.address.toLowerCase(), 'implementation address does not match')
|
||
|
})
|
||
|
|
||
|
it('uses the given implementation', async () => {
|
||
|
const implementationAddress = await proxy.implementation()
|
||
|
assert.equal(implementationAddress, implementation.address, 'implementation address does not match')
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('proxyType', () => {
|
||
|
it('is a forwarding type', async () => {
|
||
|
assert.equal(await proxy.proxyType(), FORWARDING_TYPE, 'proxy type does not match')
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('fallback', () => {
|
||
|
it('forward calls to the implementation set', async () => {
|
||
|
const staking = await Staking.at(proxy.address)
|
||
|
assert.equal(await staking.token(), token.address, 'token address does not match')
|
||
|
})
|
||
|
})
|
||
|
})
|