CanReclaimToken.test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const { expectThrow } = require('../helpers/expectThrow');
  2. const CanReclaimToken = artifacts.require('CanReclaimToken');
  3. const StandardTokenMock = artifacts.require('StandardTokenMock');
  4. const BigNumber = web3.BigNumber;
  5. require('chai')
  6. .use(require('chai-bignumber')(BigNumber))
  7. .should();
  8. contract('CanReclaimToken', function ([_, owner, anyone]) {
  9. let token = null;
  10. let canReclaimToken = null;
  11. beforeEach(async function () {
  12. // Create contract and token
  13. token = await StandardTokenMock.new(owner, 100, { from: owner });
  14. canReclaimToken = await CanReclaimToken.new({ from: owner });
  15. // Force token into contract
  16. await token.transfer(canReclaimToken.address, 10, { from: owner });
  17. const startBalance = await token.balanceOf(canReclaimToken.address);
  18. startBalance.should.be.bignumber.equal(10);
  19. });
  20. it('should allow owner to reclaim tokens', async function () {
  21. const ownerStartBalance = await token.balanceOf(owner);
  22. await canReclaimToken.reclaimToken(token.address, { from: owner });
  23. const ownerFinalBalance = await token.balanceOf(owner);
  24. const finalBalance = await token.balanceOf(canReclaimToken.address);
  25. finalBalance.should.be.bignumber.equal(0);
  26. ownerFinalBalance.sub(ownerStartBalance).should.be.bignumber.equal(10);
  27. });
  28. it('should allow only owner to reclaim tokens', async function () {
  29. await expectThrow(
  30. canReclaimToken.reclaimToken(token.address, { from: anyone })
  31. );
  32. });
  33. });