Merge pull request #24 from maraoz/ppc-test
add PullPaymentCapable test
This commit is contained in:
@ -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
contracts/examples/PullPaymentCapableExample.sol
Normal file
9
contracts/examples/PullPaymentCapableExample.sol
Normal file
@ -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
contracts/test-helpers/PullPaymentMock.sol
Normal file
9
contracts/test-helpers/PullPaymentMock.sol
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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
test/PullPayment.js
Normal file
29
test/PullPayment.js
Normal file
@ -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);
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user