Added totalPayments uint on PullPayments contract

pull/193/head
AugustoL 8 years ago
parent b420316783
commit a8bcb0fcfe
  1. 5
      contracts/payment/PullPayment.sol
  2. 13
      test/PullPayment.js

@ -11,17 +11,19 @@ import '../SafeMath.sol';
*/ */
contract PullPayment is SafeMath { contract PullPayment is SafeMath {
mapping(address => uint) public payments; mapping(address => uint) public payments;
uint public totalPayments;
// store sent amount as credit to be pulled, called by payer // store sent amount as credit to be pulled, called by payer
function asyncSend(address dest, uint amount) internal { function asyncSend(address dest, uint amount) internal {
payments[dest] = safeAdd(payments[dest], amount); payments[dest] = safeAdd(payments[dest], amount);
totalPayments = safeAdd(totalPayments, amount);
} }
// withdraw accumulated balance, called by payee // withdraw accumulated balance, called by payee
function withdrawPayments() { function withdrawPayments() {
address payee = msg.sender; address payee = msg.sender;
uint payment = payments[payee]; uint payment = payments[payee];
if (payment == 0) { if (payment == 0) {
throw; throw;
} }
@ -30,6 +32,7 @@ contract PullPayment is SafeMath {
throw; throw;
} }
totalPayments = safeSub(totalPayments, payment);
payments[payee] = 0; payments[payee] = 0;
if (!payee.send(payment)) { if (!payee.send(payment)) {

@ -12,7 +12,9 @@ contract('PullPayment', function(accounts) {
let ppce = await PullPaymentMock.new(); let ppce = await PullPaymentMock.new();
let callSend = await ppce.callSend(accounts[0], AMOUNT); let callSend = await ppce.callSend(accounts[0], AMOUNT);
let paymentsToAccount0 = await ppce.payments(accounts[0]); let paymentsToAccount0 = await ppce.payments(accounts[0]);
let totalPayments = await ppce.totalPayments();
assert.equal(totalPayments, AMOUNT);
assert.equal(paymentsToAccount0, AMOUNT); assert.equal(paymentsToAccount0, AMOUNT);
}); });
@ -21,7 +23,9 @@ contract('PullPayment', function(accounts) {
let call1 = await ppce.callSend(accounts[0], 200); let call1 = await ppce.callSend(accounts[0], 200);
let call2 = await ppce.callSend(accounts[0], 300); let call2 = await ppce.callSend(accounts[0], 300);
let paymentsToAccount0 = await ppce.payments(accounts[0]); let paymentsToAccount0 = await ppce.payments(accounts[0]);
let totalPayments = await ppce.totalPayments();
assert.equal(totalPayments, 500);
assert.equal(paymentsToAccount0, 500); assert.equal(paymentsToAccount0, 500);
}); });
@ -35,6 +39,9 @@ contract('PullPayment', function(accounts) {
let paymentsToAccount1 = await ppce.payments(accounts[1]); let paymentsToAccount1 = await ppce.payments(accounts[1]);
assert.equal(paymentsToAccount1, 300); assert.equal(paymentsToAccount1, 300);
let totalPayments = await ppce.totalPayments();
assert.equal(totalPayments, 500);
}); });
it("can withdraw payment", async function() { it("can withdraw payment", async function() {
@ -48,10 +55,16 @@ contract('PullPayment', function(accounts) {
let payment1 = await ppce.payments(payee); let payment1 = await ppce.payments(payee);
assert.equal(payment1, AMOUNT); assert.equal(payment1, AMOUNT);
let totalPayments = await ppce.totalPayments();
assert.equal(totalPayments, AMOUNT);
let withdraw = await ppce.withdrawPayments({from: payee}); let withdraw = await ppce.withdrawPayments({from: payee});
let payment2 = await ppce.payments(payee); let payment2 = await ppce.payments(payee);
assert.equal(payment2, 0); assert.equal(payment2, 0);
totalPayments = await ppce.totalPayments();
assert.equal(totalPayments, 0);
let balance = web3.eth.getBalance(payee); let balance = web3.eth.getBalance(payee);
assert(Math.abs(balance-initialBalance-AMOUNT) < 1e16); assert(Math.abs(balance-initialBalance-AMOUNT) < 1e16);
}); });

Loading…
Cancel
Save