fix: make SplitPayment payable by default
This commit is contained in:
@ -4,7 +4,7 @@ import '../math/SafeMath.sol';
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @title SplitPayment
|
* @title SplitPayment
|
||||||
* @dev Base contract that supports multiple payees claiming funds sent to this contract
|
* @dev Base contract that supports multiple payees claiming funds sent to this contract
|
||||||
* according to the proportion they own.
|
* according to the proportion they own.
|
||||||
*/
|
*/
|
||||||
contract SplitPayment {
|
contract SplitPayment {
|
||||||
@ -20,7 +20,7 @@ contract SplitPayment {
|
|||||||
/**
|
/**
|
||||||
* @dev Constructor
|
* @dev Constructor
|
||||||
*/
|
*/
|
||||||
function SplitPayment(address[] _payees, uint256[] _shares) public {
|
function SplitPayment(address[] _payees, uint256[] _shares) public payable {
|
||||||
require(_payees.length == _shares.length);
|
require(_payees.length == _shares.length);
|
||||||
|
|
||||||
for (uint256 i = 0; i < _payees.length; i++) {
|
for (uint256 i = 0; i < _payees.length; i++) {
|
||||||
@ -62,4 +62,9 @@ contract SplitPayment {
|
|||||||
|
|
||||||
payee.transfer(payment);
|
payee.transfer(payment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev payable fallback
|
||||||
|
*/
|
||||||
|
function () public payable {}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ const should = require('chai')
|
|||||||
.should()
|
.should()
|
||||||
|
|
||||||
const EVMThrow = require('./helpers/EVMThrow.js')
|
const EVMThrow = require('./helpers/EVMThrow.js')
|
||||||
const SplitPaymentMock = artifacts.require('./helpers/SplitPaymentMock.sol')
|
const SplitPayment = artifacts.require('../contracts/payment/SplitPayment.sol')
|
||||||
|
|
||||||
contract('SplitPayment', function ([owner, payee1, payee2, payee3, nonpayee1, payer1]) {
|
contract('SplitPayment', function ([owner, payee1, payee2, payee3, nonpayee1, payer1]) {
|
||||||
const amount = web3.toWei(1.0, 'ether')
|
const amount = web3.toWei(1.0, 'ether')
|
||||||
@ -15,7 +15,7 @@ contract('SplitPayment', function ([owner, payee1, payee2, payee3, nonpayee1, pa
|
|||||||
this.payees = [payee1, payee2, payee3]
|
this.payees = [payee1, payee2, payee3]
|
||||||
this.shares = [20, 10, 70]
|
this.shares = [20, 10, 70]
|
||||||
|
|
||||||
this.contract = await SplitPaymentMock.new(this.payees, this.shares)
|
this.contract = await SplitPayment.new(this.payees, this.shares)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should accept payments', async function () {
|
it('should accept payments', async function () {
|
||||||
@ -43,7 +43,7 @@ contract('SplitPayment', function ([owner, payee1, payee2, payee3, nonpayee1, pa
|
|||||||
await web3.eth.sendTransaction({from: payer1, to: this.contract.address, value: amount})
|
await web3.eth.sendTransaction({from: payer1, to: this.contract.address, value: amount})
|
||||||
await this.contract.claim({from: nonpayee1}).should.be.rejectedWith(EVMThrow)
|
await this.contract.claim({from: nonpayee1}).should.be.rejectedWith(EVMThrow)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should distribute funds to payees', async function () {
|
it('should distribute funds to payees', async function () {
|
||||||
await web3.eth.sendTransaction({from: payer1, to: this.contract.address, value: amount})
|
await web3.eth.sendTransaction({from: payer1, to: this.contract.address, value: amount})
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
pragma solidity ^0.4.18;
|
|
||||||
|
|
||||||
import '../../contracts/payment/SplitPayment.sol';
|
|
||||||
|
|
||||||
// mock class using SplitPayment
|
|
||||||
contract SplitPaymentMock is SplitPayment {
|
|
||||||
function SplitPaymentMock(address[] _payees, uint256[] _shares) public
|
|
||||||
SplitPayment(_payees, _shares) payable {}
|
|
||||||
function () external payable {}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user