Commit 570d6cb9 by Manuel Aráoz Committed by GitHub

Merge pull request #24 from maraoz/ppc-test

add PullPaymentCapable test
parents 8ad21ca8 503faa05
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* Inherit from this contract and use asyncSend instead of send. * Inherit from this contract and use asyncSend instead of send.
*/ */
contract PullPaymentCapable { contract PullPaymentCapable {
mapping(address => uint) payments; mapping(address => uint) public payments;
// 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 {
......
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);
}
}
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);
}
}
...@@ -2,36 +2,36 @@ contract('Ownable', function(accounts) { ...@@ -2,36 +2,36 @@ contract('Ownable', function(accounts) {
it("should have an owner", function(done) { it("should have an owner", function(done) {
var ownable = Ownable.deployed(); var ownable = Ownable.deployed();
return ownable.owner() return ownable.owner()
.then(function(owner) { .then(function(owner) {
assert.isTrue(owner != 0); assert.isTrue(owner != 0);
}) })
.then(done) .then(done)
}); });
it("changes owner after transfer", function(done) { it("changes owner after transfer", function(done) {
var ownable = Ownable.deployed(); var ownable = Ownable.deployed();
var other = accounts[1]; var other = accounts[1];
return ownable.transfer(other) return ownable.transfer(other)
.then(function() { .then(function() {
return ownable.owner(); return ownable.owner();
}) })
.then(function(owner) { .then(function(owner) {
assert.isTrue(owner === other); assert.isTrue(owner === other);
}) })
.then(done) .then(done)
}); });
it("should prevent non-owners from transfering" ,function(done) { it("should prevent non-owners from transfering" ,function(done) {
var ownable = Ownable.deployed(); var ownable = Ownable.deployed();
var other = accounts[2]; var other = accounts[2];
return ownable.transfer(other, {from: accounts[2]}) return ownable.transfer(other, {from: accounts[2]})
.then(function() { .then(function() {
return ownable.owner(); return ownable.owner();
}) })
.then(function(owner) { .then(function(owner) {
assert.isFalse(owner === other); assert.isFalse(owner === other);
}) })
.then(done) .then(done)
}); });
}); });
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);
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment