Browse Source

Merge pull request #24 from maraoz/ppc-test

add PullPaymentCapable test
Manuel Aráoz 9 years ago
parent
commit
570d6cb940

+ 1 - 1
contracts/PullPaymentCapable.sol → contracts/PullPayment.sol

@@ -4,7 +4,7 @@
  * Inherit from this contract and use asyncSend instead of send.
  */
 contract PullPaymentCapable {
-  mapping(address => uint) payments;
+  mapping(address => uint) public payments;
 
   // store sent amount as credit to be pulled, called by payer
   function asyncSend(address dest, uint amount) internal {

+ 9 - 0
contracts/examples/PullPaymentCapableExample.sol

@@ -0,0 +1,9 @@
+import '../PullPaymentCapable.sol';
+
+// Example class using PullPaymentCapable
+contract PullPaymentCapableExample is PullPaymentCapable {
+  // test helper function to call asyncSend
+  function callSend(address dest, uint amount) external {
+    asyncSend(dest, amount);
+  }
+}

+ 9 - 0
contracts/test-helpers/PullPaymentMock.sol

@@ -0,0 +1,9 @@
+import '../PullPayment.sol';
+
+// mock class using PullPayment
+contract PullPaymentMock is PullPayment {
+  // test helper function to call asyncSend
+  function callSend(address dest, uint amount) external {
+    asyncSend(dest, amount);
+  }
+}

+ 18 - 18
test/ownable.js → test/Ownable.js

@@ -2,36 +2,36 @@ contract('Ownable', function(accounts) {
   it("should have an owner", function(done) {
     var ownable = Ownable.deployed();
     return ownable.owner()
-    .then(function(owner) {
-      assert.isTrue(owner != 0);
-    })
-    .then(done)
+      .then(function(owner) {
+        assert.isTrue(owner != 0);
+      })
+      .then(done)
   });
 
   it("changes owner after transfer", function(done) {
     var ownable = Ownable.deployed();
     var other = accounts[1];
     return ownable.transfer(other)
-    .then(function() {
-      return ownable.owner();
-    })
-    .then(function(owner) {
-      assert.isTrue(owner === other);
-    })
-    .then(done)
+      .then(function() {
+        return ownable.owner();
+      })
+      .then(function(owner) {
+        assert.isTrue(owner === other);
+      })
+      .then(done)
   });
 
   it("should prevent non-owners from transfering" ,function(done) {
     var ownable = Ownable.deployed();
     var other = accounts[2];
     return ownable.transfer(other, {from: accounts[2]})
-    .then(function() {
-      return ownable.owner();
-    })
-    .then(function(owner) {
-      assert.isFalse(owner === other);
-    })
-    .then(done)
+      .then(function() {
+        return ownable.owner();
+      })
+      .then(function(owner) {
+        assert.isFalse(owner === other);
+      })
+      .then(done)
   });
 
 });

+ 29 - 0
test/PullPayment.js

@@ -0,0 +1,29 @@
+contract('PullPaymentCapable', function(accounts) {
+
+  it("can't call asyncSend externally", function(done) {
+    var ppc;
+    return PullPaymentCapableExample.new()
+      .then(function(ppc) {
+        assert.isUndefined(ppc.asyncSend);
+      })
+      .then(done);
+  });
+
+  it("can record an async payment correctly", function(done) {
+    var ppce;
+    var AMOUNT = 100;
+    return PullPaymentCapableExample.new()
+      .then(function(_ppce) {
+        ppce = _ppce;
+        ppce.callSend(accounts[0], AMOUNT)
+      })
+      .then(function() {
+        return ppce.payments(accounts[0]);
+      })
+      .then(function(paymentsToAccount0) {
+        assert.equal(paymentsToAccount0, AMOUNT);
+      })
+      .then(done);
+  });
+
+});