const { assertRevert } = require('./helpers/assertRevert'); const { ethGetBalance } = require('./helpers/web3'); const LimitBalanceMock = artifacts.require('LimitBalanceMock'); const BigNumber = web3.BigNumber; require('chai') .use(require('chai-bignumber')(BigNumber)) .should(); contract('LimitBalance', function () { let limitBalance; beforeEach(async function () { limitBalance = await LimitBalanceMock.new(); }); const LIMIT = 1000; it('should expose limit', async function () { const limit = await limitBalance.limit(); limit.should.be.bignumber.equal(LIMIT); }); it('should allow sending below limit', async function () { const amount = 1; await limitBalance.limitedDeposit({ value: amount }); const balance = await ethGetBalance(limitBalance.address); balance.should.be.bignumber.equal(amount); }); it('shouldnt allow sending above limit', async function () { const amount = 1110; await assertRevert(limitBalance.limitedDeposit({ value: amount })); }); it('should allow multiple sends below limit', async function () { const amount = 500; await limitBalance.limitedDeposit({ value: amount }); const balance = await ethGetBalance(limitBalance.address); balance.should.be.bignumber.equal(amount); await limitBalance.limitedDeposit({ value: amount }); const updatedBalance = await ethGetBalance(limitBalance.address); updatedBalance.should.be.bignumber.equal(amount * 2); }); it('shouldnt allow multiple sends above limit', async function () { const amount = 500; await limitBalance.limitedDeposit({ value: amount }); const balance = await ethGetBalance(limitBalance.address); balance.should.be.bignumber.equal(amount); await assertRevert(limitBalance.limitedDeposit({ value: amount + 1 })); }); });