PullPayment.js 1.9 KB

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