text: 'use strict';
  import expectThrow from './helpers/expectThrow';
  import toPromise from './helpers/toPromise';
  const CanReclaimToken = artifacts.require('../contracts/ownership/CanReclaimToken.sol');
  const BasicTokenMock = artifacts.require("./helpers/BasicTokenMock.sol");
  
  contract('CanReclaimToken', function(accounts) {
    let token = null;
    let canReclaimToken = null;
  
    beforeEach(async function() {
      // Create contract and token
      token = await BasicTokenMock.new(accounts[0], 100);
      canReclaimToken = await CanReclaimToken.new();
      // Force token into contract
      await token.transfer(canReclaimToken.address, 10);
      const startBalance = await token.balanceOf(canReclaimToken.address);
      assert.equal(startBalance, 10);
    });
  
    it('should allow owner to reclaim tokens', async function() {
      const ownerStartBalance = await token.balanceOf(accounts[0]);
      await canReclaimToken.reclaimToken(token.address);
      const ownerFinalBalance = await token.balanceOf(accounts[0]);
      const finalBalance = await token.balanceOf(canReclaimToken.address);
      assert.equal(finalBalance, 0);
      assert.equal(ownerFinalBalance - ownerStartBalance, 10);
    });
  
    it('should allow only owner to reclaim tokens', async function() {
      await expectThrow(
        canReclaimToken.reclaimToken(token.address, {from: accounts[1]}),
      );
    });
  });
  