Skip to content
This repository was archived by the owner on Jan 18, 2023. It is now read-only.

Commit 2be1a1c

Browse files
committed
Added tests for logging
1 parent 136087a commit 2be1a1c

File tree

3 files changed

+72
-15
lines changed

3 files changed

+72
-15
lines changed

contracts/SetToken.sol

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ contract SetToken is StandardToken, DetailedERC20("", "", 18), Set {
3737

3838
event LogRedeemExcluded(
3939
address indexed _sender,
40-
uint[] _quantities,
41-
address[] _component
40+
address[] _components
4241
);
4342

4443
modifier hasSufficientBalance(uint quantity) {
@@ -244,7 +243,7 @@ contract SetToken is StandardToken, DetailedERC20("", "", 18), Set {
244243
assert(ERC20(currentComponent).transfer(msg.sender, currentQuantity));
245244
}
246245

247-
LogRedeemExcluded(msg.sender, quantities, excludedComponents);
246+
LogRedeemExcluded(msg.sender, excludedComponents);
248247

249248
return true;
250249
}

test/logs/SetToken.ts

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,23 @@ interface LogInterface {
1010
event: string;
1111
}
1212

13+
export function LogTransfer(
14+
from: Address,
15+
to: Address,
16+
value: BigNumber,
17+
tokenAddress: Address,
18+
): LogInterface {
19+
return {
20+
event: "Transfer",
21+
address: tokenAddress,
22+
args: {
23+
from,
24+
to,
25+
value,
26+
},
27+
};
28+
}
29+
1330
export function LogIssuance(
1431
senderAddress: Address,
1532
quantity: BigNumber,
@@ -57,19 +74,17 @@ export function LogPartialRedemption(
5774
};
5875
}
5976

60-
export function LogTransfer(
61-
from: Address,
62-
to: Address,
63-
value: BigNumber,
64-
tokenAddress: Address,
77+
export function LogRedeemExcluded(
78+
senderAddress: Address,
79+
setTokenAddress: Address,
80+
components: Address[],
6581
): LogInterface {
6682
return {
67-
event: "Transfer",
68-
address: tokenAddress,
83+
event: "LogRedeemExcluded",
84+
address: setTokenAddress,
6985
args: {
70-
from,
71-
to,
72-
value,
86+
_sender: senderAddress,
87+
_components: components,
7388
},
7489
};
7590
}
@@ -161,3 +176,30 @@ export function getExpectedPartialRedeemLogs(
161176

162177
return result;
163178
}
179+
180+
export function getExpectedRedeemExcludedLogs(
181+
componentAddresses: Address[],
182+
quantitiesTransferred: BigNumber[],
183+
setTokenAddress: Address,
184+
sender: Address,
185+
): LogInterface[] {
186+
const result: LogInterface[] = [];
187+
// Create transfer logs from transferred components and units
188+
_.each(componentAddresses, (componentAddress, index) => {
189+
result.push(LogTransfer(
190+
setTokenAddress,
191+
sender,
192+
quantitiesTransferred[index],
193+
componentAddresses[index],
194+
));
195+
});
196+
197+
// Create Redeem Excluded Log
198+
result.push(LogRedeemExcluded(
199+
sender,
200+
setTokenAddress,
201+
componentAddresses,
202+
));
203+
204+
return result;
205+
}

test/setToken-base.spec.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
getExpectedIssueLogs,
2929
getExpectedRedeemLogs,
3030
getExpectedPartialRedeemLogs,
31+
getExpectedRedeemExcludedLogs,
3132
} from "./logs/SetToken";
3233

3334
import {
@@ -477,7 +478,7 @@ contract("{Set}", (accounts) => {
477478
});
478479
});
479480

480-
describe.only("Redeem Excluded", async () => {
481+
describe("Redeem Excluded", async () => {
481482
let componentExcluded: any;
482483
let componentAddressExcluded: Address;
483484

@@ -491,7 +492,22 @@ contract("{Set}", (accounts) => {
491492
});
492493

493494
it("should work", async () => {
494-
await setToken.redeemExcluded([quantitiesToTransfer[0]], [componentAddressExcluded], TX_DEFAULTS);
495+
const redeemExcludedReceipt = await setToken.redeemExcluded(
496+
[quantitiesToTransfer[0]],
497+
[componentAddressExcluded],
498+
TX_DEFAULTS,
499+
);
500+
501+
const { logs } = redeemExcludedReceipt;
502+
const formattedLogs = _.map(logs, (log) => extractLogEventAndArgs(log));
503+
const expectedLogs = getExpectedRedeemExcludedLogs(
504+
[componentAddressExcluded],
505+
[quantitiesToTransfer[0]],
506+
setToken.address,
507+
testAccount,
508+
);
509+
510+
expect(JSON.stringify(formattedLogs)).to.equal(JSON.stringify(expectedLogs));
495511

496512
assertTokenBalance(componentExcluded, initialTokens, testAccount);
497513

0 commit comments

Comments
 (0)