Skip to content

Commit e6325ed

Browse files
committed
Add additional events for StreamingPayments
1 parent 5c0a602 commit e6325ed

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

contracts/extensions/StreamingPayments.sol

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ contract StreamingPayments is ColonyExtensionMeta {
4040
address token,
4141
uint256 amount
4242
);
43+
event StartTimeSet(address agent, uint256 indexed streamingPaymentId, uint256 startTime);
44+
event EndTimeSet(address agent, uint256 indexed streamingPaymentId, uint256 endTime);
45+
event ClaimWaived(address agent, uint256 indexed streamingPaymentId, address token);
4346

4447
// Constants
4548

@@ -358,6 +361,8 @@ contract StreamingPayments is ColonyExtensionMeta {
358361
require(_startTime <= streamingPayment.endTime, "streaming-payments-invalid-start-time");
359362

360363
streamingPayment.startTime = _startTime;
364+
365+
emit StartTimeSet(msgSender(), _id, _startTime);
361366
}
362367

363368
/// @notice Update the endTime, only if the new endTime is in the future
@@ -384,6 +389,8 @@ contract StreamingPayments is ColonyExtensionMeta {
384389
require(streamingPayment.startTime <= _endTime, "streaming-payments-invalid-end-time");
385390

386391
streamingPayment.endTime = _endTime;
392+
393+
emit EndTimeSet(msgSender(), _id, _endTime);
387394
}
388395

389396
/// @notice Cancel the streaming payment, specifically by setting endTime to block.timestamp
@@ -427,6 +434,7 @@ contract StreamingPayments is ColonyExtensionMeta {
427434
for (uint256 i; i < _tokens.length; i++) {
428435
PaymentToken storage paymentToken = paymentTokens[_id][_tokens[i]];
429436
paymentToken.pseudoAmountClaimedFromStart = getAmountEntitledFromStart(_id, _tokens[i]);
437+
emit ClaimWaived(msgSender(), _id, _tokens[i]);
430438
}
431439
}
432440

test/extensions/streaming-payments.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ const { ethers } = require("ethers");
66
const { soliditySha3 } = require("web3-utils");
77

88
const { UINT256_MAX, WAD, SECONDS_PER_DAY, ADDRESS_ZERO } = require("../../helpers/constants");
9-
const { checkErrorRevert, web3GetCode, makeTxAtTimestamp, getBlockTime, getTokenArgs, forwardTime } = require("../../helpers/test-helper");
9+
const {
10+
checkErrorRevert,
11+
web3GetCode,
12+
makeTxAtTimestamp,
13+
getBlockTime,
14+
getTokenArgs,
15+
forwardTime,
16+
expectEvent,
17+
} = require("../../helpers/test-helper");
1018
const { setupRandomColony, fundColonyWithTokens } = require("../../helpers/test-data-generator");
1119

1220
const { expect } = chai;
@@ -174,9 +182,11 @@ contract("Streaming Payments", (accounts) => {
174182
expect(streamingPayment.startTime).to.eq.BN(startTime);
175183

176184
// Now make it two days into the future
177-
await streamingPayments.setStartTime(1, UINT256_MAX, streamingPaymentId, newStartTime);
185+
const tx = await streamingPayments.setStartTime(1, UINT256_MAX, streamingPaymentId, newStartTime);
178186
streamingPayment = await streamingPayments.getStreamingPayment(streamingPaymentId);
179187
expect(streamingPayment.startTime).to.eq.BN(newStartTime);
188+
189+
await expectEvent(tx, "StartTimeSet", [accounts[0], streamingPaymentId, newStartTime]);
180190
});
181191

182192
it("cannot update the start time after the start time has passed", async () => {
@@ -227,9 +237,11 @@ contract("Streaming Payments", (accounts) => {
227237
streamingPayment = await streamingPayments.getStreamingPayment(streamingPaymentId);
228238
expect(streamingPayment.endTime).to.eq.BN(endTime);
229239

230-
await streamingPayments.setEndTime(1, UINT256_MAX, streamingPaymentId, newEndTime);
240+
const tx = await streamingPayments.setEndTime(1, UINT256_MAX, streamingPaymentId, newEndTime);
231241
streamingPayment = await streamingPayments.getStreamingPayment(streamingPaymentId);
232242
expect(streamingPayment.endTime).to.eq.BN(newEndTime);
243+
244+
await expectEvent(tx, "EndTimeSet", [accounts[0], streamingPaymentId, newEndTime]);
233245
});
234246

235247
it("cannot update the end time to a time past", async () => {
@@ -429,6 +441,8 @@ contract("Streaming Payments", (accounts) => {
429441

430442
const streamingPayment = await streamingPayments.getStreamingPayment(streamingPaymentId);
431443
expect(streamingPayment.endTime).to.eq.BN(blockTime);
444+
445+
expectEvent(tx, "EndTimeSet", [accounts[0], streamingPaymentId, blockTime]);
432446
});
433447

434448
it("can cancel a streaming payment before the start time", async () => {
@@ -473,12 +487,12 @@ contract("Streaming Payments", (accounts) => {
473487
});
474488

475489
it("receipient can cancel and waive a streaming payment", async () => {
476-
const tx = await streamingPayments.create(1, UINT256_MAX, 1, UINT256_MAX, 1, 0, UINT256_MAX, SECONDS_PER_DAY, USER1, [token.address], [WAD]);
490+
let tx = await streamingPayments.create(1, UINT256_MAX, 1, UINT256_MAX, 1, 0, UINT256_MAX, SECONDS_PER_DAY, USER1, [token.address], [WAD]);
477491
const streamingPaymentId = await streamingPayments.getNumStreamingPayments();
478492

479493
const blockTime = await getBlockTime(tx.receipt.blockNumber);
480494

481-
await makeTxAtTimestamp(
495+
tx = await makeTxAtTimestamp(
482496
streamingPayments.cancelAndWaive,
483497
[streamingPaymentId, [token.address], { from: USER1 }],
484498
blockTime + SECONDS_PER_DAY * 2,
@@ -490,6 +504,8 @@ contract("Streaming Payments", (accounts) => {
490504

491505
const paymentToken = await streamingPayments.getPaymentToken(streamingPaymentId, token.address);
492506
expect(paymentToken.pseudoAmountClaimedFromStart).to.equal((WAD * 2).toString());
507+
508+
expectEvent(tx, "ClaimWaived", [USER1, streamingPaymentId, token.address]);
493509
});
494510

495511
it("multiple cancel-and-waives of a streaming payments do not change the end time", async () => {

0 commit comments

Comments
 (0)