You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.0 KiB
61 lines
2.0 KiB
import advanceToBlock from './helpers/advanceToBlock'
|
|
import EVMThrow from './helpers/EVMThrow'
|
|
|
|
const BigNumber = web3.BigNumber
|
|
|
|
const should = require('chai')
|
|
.use(require('chai-as-promised'))
|
|
.use(require('chai-bignumber')(BigNumber))
|
|
.should()
|
|
|
|
const FinalizableCrowdsale = artifacts.require('./helpers/FinalizableCrowdsaleImpl.sol')
|
|
const MintableToken = artifacts.require('MintableToken')
|
|
|
|
contract('FinalizableCrowdsale', function ([_, owner, wallet, thirdparty]) {
|
|
|
|
const rate = new BigNumber(1000)
|
|
|
|
beforeEach(async function () {
|
|
this.startBlock = web3.eth.blockNumber + 10
|
|
this.endBlock = web3.eth.blockNumber + 20
|
|
|
|
this.crowdsale = await FinalizableCrowdsale.new(this.startBlock, this.endBlock, rate, wallet, {from: owner})
|
|
|
|
this.token = MintableToken.at(await this.crowdsale.token())
|
|
})
|
|
|
|
it('cannot be finalized before ending', async function () {
|
|
await this.crowdsale.finalize({from: owner}).should.be.rejectedWith(EVMThrow)
|
|
})
|
|
|
|
it('cannot be finalized by third party after ending', async function () {
|
|
await advanceToBlock(this.endBlock)
|
|
await this.crowdsale.finalize({from: thirdparty}).should.be.rejectedWith(EVMThrow)
|
|
})
|
|
|
|
it('can be finalized by owner after ending', async function () {
|
|
await advanceToBlock(this.endBlock)
|
|
await this.crowdsale.finalize({from: owner}).should.be.fulfilled
|
|
})
|
|
|
|
it('cannot be finalized twice', async function () {
|
|
await advanceToBlock(this.endBlock + 1)
|
|
await this.crowdsale.finalize({from: owner})
|
|
await this.crowdsale.finalize({from: owner}).should.be.rejectedWith(EVMThrow)
|
|
})
|
|
|
|
it('logs finalized', async function () {
|
|
await advanceToBlock(this.endBlock)
|
|
const {logs} = await this.crowdsale.finalize({from: owner})
|
|
const event = logs.find(e => e.event === 'Finalized')
|
|
should.exist(event)
|
|
})
|
|
|
|
it('finishes minting of token', async function () {
|
|
await advanceToBlock(this.endBlock)
|
|
await this.crowdsale.finalize({from: owner})
|
|
const finished = await this.token.mintingFinished()
|
|
finished.should.equal(true)
|
|
})
|
|
|
|
})
|
|
|