text: 
  import expectThrow from './helpers/expectThrow';
  import toPromise from './helpers/toPromise';
  const HasNoEtherTest = artifacts.require('../mocks/HasNoEtherTest.sol');
  const ForceEther = artifacts.require('../mocks/ForceEther.sol');
  
  contract('HasNoEther', function (accounts) {
    const amount = web3.toWei('1', 'ether');
  
    it('should be constructorable', async function () {
      await HasNoEtherTest.new();
    });
  
    it('should not accept ether in constructor', async function () {
      await expectThrow(HasNoEtherTest.new({ value: amount }));
    });
  
    it('should not accept ether', async function () {
      let hasNoEther = await HasNoEtherTest.new();
  
      await expectThrow(
        toPromise(web3.eth.sendTransaction)({
          from: accounts[1],
          to: hasNoEther.address,
          value: amount,
        }),
      );
    });
  
    it('should allow owner to reclaim ether', async function () {
      // Create contract
      let hasNoEther = await HasNoEtherTest.new();
      const startBalance = await web3.eth.getBalance(hasNoEther.address);
      assert.equal(startBalance, 0);
  
      // Force ether into it
      let forceEther = await ForceEther.new({ value: amount });
      await forceEther.destroyAndSend(hasNoEther.address);
      const forcedBalance = await web3.eth.getBalance(hasNoEther.address);
      assert.equal(forcedBalance, amount);
  
      // Reclaim
      const ownerStartBalance = await web3.eth.getBalance(accounts[0]);
      await hasNoEther.reclaimEther();
      const ownerFinalBalance = await web3.eth.getBalance(accounts[0]);
      const finalBalance = await web3.eth.getBalance(hasNoEther.address);
      assert.equal(finalBalance, 0);
      assert.isAbove(ownerFinalBalance, ownerStartBalance);
    });
  
    it('should allow only owner to reclaim ether', async function () {
      // Create contract
      let hasNoEther = await HasNoEtherTest.new({ from: accounts[0] });
  
      // Force ether into it
      let forceEther = await ForceEther.new({ value: amount });
      await forceEther.destroyAndSend(hasNoEther.address);
      const forcedBalance = await web3.eth.getBalance(hasNoEther.address);
      assert.equal(forcedBalance, amount);
  
      // Reclaim
      await expectThrow(hasNoEther.reclaimEther({ from: accounts[1] }));
    });
  });
  