HasNoTokens.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. 'use strict';
  2. import expectThrow from './helpers/expectThrow';
  3. import toPromise from './helpers/toPromise';
  4. const HasNoTokens = artifacts.require('../contracts/lifecycle/HasNoTokens.sol');
  5. const ERC23TokenMock = artifacts.require('./helpers/ERC23TokenMock.sol');
  6. contract('HasNoTokens', function(accounts) {
  7. let hasNoTokens = null;
  8. let token = null;
  9. beforeEach(async () => {
  10. // Create contract and token
  11. hasNoTokens = await HasNoTokens.new();
  12. token = await ERC23TokenMock.new(accounts[0], 100);
  13. // Force token into contract
  14. await token.transfer(hasNoTokens.address, 10);
  15. const startBalance = await token.balanceOf(hasNoTokens.address);
  16. assert.equal(startBalance, 10);
  17. });
  18. it('should not accept ERC23 tokens', async function() {
  19. await expectThrow(token.transferERC23(hasNoTokens.address, 10, ''));
  20. });
  21. it('should allow owner to reclaim tokens', async function() {
  22. const ownerStartBalance = await token.balanceOf(accounts[0]);
  23. await hasNoTokens.reclaimToken(token.address);
  24. const ownerFinalBalance = await token.balanceOf(accounts[0]);
  25. const finalBalance = await token.balanceOf(hasNoTokens.address);
  26. assert.equal(finalBalance, 0);
  27. assert.equal(ownerFinalBalance - ownerStartBalance, 10);
  28. });
  29. it('should allow only owner to reclaim tokens', async function() {
  30. await expectThrow(
  31. hasNoTokens.reclaimToken(token.address, {from: accounts[1]}),
  32. );
  33. });
  34. });