BurnableToken.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use strict'
  2. const EVMThrow = require('./helpers/EVMThrow.js')
  3. const BurnableTokenMock = artifacts.require("./helpers/BurnableTokenMock.sol")
  4. const BigNumber = web3.BigNumber
  5. require('chai')
  6. .use(require('chai-as-promised'))
  7. .use(require('chai-bignumber')(BigNumber))
  8. .should()
  9. const expect = require('chai').expect
  10. contract('BurnableToken', function (accounts) {
  11. let token
  12. let expectedTokenSupply = new BigNumber(999)
  13. beforeEach(async function () {
  14. token = await BurnableTokenMock.new(accounts[0], 1000)
  15. })
  16. it('owner should be able to burn tokens', async function () {
  17. const { logs } = await token.burn(1, { from: accounts[0] })
  18. const balance = await token.balanceOf(accounts[0])
  19. balance.should.be.bignumber.equal(expectedTokenSupply)
  20. const totalSupply = await token.totalSupply()
  21. totalSupply.should.be.bignumber.equal(expectedTokenSupply)
  22. const event = logs.find(e => e.event === 'Burn')
  23. expect(event).to.exist
  24. })
  25. it('cannot burn more tokens than your balance', async function () {
  26. await token.burn(2000, { from: accounts[0] })
  27. .should.be.rejectedWith(EVMThrow)
  28. })
  29. })