PullPayment.test.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. var PullPaymentMock = artifacts.require('mocks/PullPaymentMock.sol');
  2. contract('PullPayment', function (accounts) {
  3. let ppce;
  4. let amount = 17 * 1e18;
  5. beforeEach(async function () {
  6. ppce = await PullPaymentMock.new({ value: amount });
  7. });
  8. it('can\'t call asyncSend externally', async function () {
  9. assert.isUndefined(ppce.asyncSend);
  10. });
  11. it('can record an async payment correctly', async function () {
  12. let AMOUNT = 100;
  13. await ppce.callSend(accounts[0], AMOUNT);
  14. let paymentsToAccount0 = await ppce.payments(accounts[0]);
  15. let totalPayments = await ppce.totalPayments();
  16. assert.equal(totalPayments, AMOUNT);
  17. assert.equal(paymentsToAccount0, AMOUNT);
  18. });
  19. it('can add multiple balances on one account', async function () {
  20. await ppce.callSend(accounts[0], 200);
  21. await ppce.callSend(accounts[0], 300);
  22. let paymentsToAccount0 = await ppce.payments(accounts[0]);
  23. let totalPayments = await ppce.totalPayments();
  24. assert.equal(totalPayments, 500);
  25. assert.equal(paymentsToAccount0, 500);
  26. });
  27. it('can add balances on multiple accounts', async function () {
  28. await ppce.callSend(accounts[0], 200);
  29. await ppce.callSend(accounts[1], 300);
  30. let paymentsToAccount0 = await ppce.payments(accounts[0]);
  31. assert.equal(paymentsToAccount0, 200);
  32. let paymentsToAccount1 = await ppce.payments(accounts[1]);
  33. assert.equal(paymentsToAccount1, 300);
  34. let totalPayments = await ppce.totalPayments();
  35. assert.equal(totalPayments, 500);
  36. });
  37. it('can withdraw payment', async function () {
  38. let payee = accounts[1];
  39. let initialBalance = web3.eth.getBalance(payee);
  40. await ppce.callSend(payee, amount);
  41. let payment1 = await ppce.payments(payee);
  42. assert.equal(payment1, amount);
  43. let totalPayments = await ppce.totalPayments();
  44. assert.equal(totalPayments, amount);
  45. await ppce.withdrawPayments({ from: payee });
  46. let payment2 = await ppce.payments(payee);
  47. assert.equal(payment2, 0);
  48. totalPayments = await ppce.totalPayments();
  49. assert.equal(totalPayments, 0);
  50. let balance = web3.eth.getBalance(payee);
  51. assert(Math.abs(balance - initialBalance - amount) < 1e16);
  52. });
  53. });