RefundVault.test.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import ether from './helpers/ether';
  2. import EVMRevert from './helpers/EVMRevert';
  3. const BigNumber = web3.BigNumber;
  4. require('chai')
  5. .use(require('chai-as-promised'))
  6. .use(require('chai-bignumber')(BigNumber))
  7. .should();
  8. const RefundVault = artifacts.require('RefundVault');
  9. contract('RefundVault', function ([_, owner, wallet, investor]) {
  10. const value = ether(42);
  11. beforeEach(async function () {
  12. this.vault = await RefundVault.new(wallet, { from: owner });
  13. });
  14. it('should accept contributions', async function () {
  15. await this.vault.deposit(investor, { value, from: owner }).should.be.fulfilled;
  16. });
  17. it('should not refund contribution during active state', async function () {
  18. await this.vault.deposit(investor, { value, from: owner });
  19. await this.vault.refund(investor).should.be.rejectedWith(EVMRevert);
  20. });
  21. it('only owner can enter refund mode', async function () {
  22. await this.vault.enableRefunds({ from: _ }).should.be.rejectedWith(EVMRevert);
  23. await this.vault.enableRefunds({ from: owner }).should.be.fulfilled;
  24. });
  25. it('should refund contribution after entering refund mode', async function () {
  26. await this.vault.deposit(investor, { value, from: owner });
  27. await this.vault.enableRefunds({ from: owner });
  28. const pre = web3.eth.getBalance(investor);
  29. await this.vault.refund(investor);
  30. const post = web3.eth.getBalance(investor);
  31. post.minus(pre).should.be.bignumber.equal(value);
  32. });
  33. it('only owner can close', async function () {
  34. await this.vault.close({ from: _ }).should.be.rejectedWith(EVMRevert);
  35. await this.vault.close({ from: owner }).should.be.fulfilled;
  36. });
  37. it('should forward funds to wallet after closing', async function () {
  38. await this.vault.deposit(investor, { value, from: owner });
  39. const pre = web3.eth.getBalance(wallet);
  40. await this.vault.close({ from: owner });
  41. const post = web3.eth.getBalance(wallet);
  42. post.minus(pre).should.be.bignumber.equal(value);
  43. });
  44. });