@@ -24,7 +24,11 @@ const { expect, assert } = chai;
24
24
25
25
import { extractLogEventAndArgs } from "./logs/log_utils" ;
26
26
27
- import { getExpectedIssueLogs } from "./logs/SetToken" ;
27
+ import {
28
+ getExpectedIssueLogs ,
29
+ getExpectedRedeemLogs ,
30
+ getExpectedPartialRedeemLogs ,
31
+ } from "./logs/SetToken" ;
28
32
29
33
import {
30
34
assertTokenBalance ,
@@ -246,19 +250,21 @@ contract("{Set}", (accounts) => {
246
250
// This is about ~2M Gas.
247
251
describe ( "of 60 Component Set" , ( ) => {
248
252
it ( `should work` , async ( ) => {
249
- await deployStandardSetAndApprove ( 5 ) ;
253
+ await deployStandardSetAndApprove ( 60 ) ;
254
+
255
+ quantitiesToTransfer = _ . map ( units , ( unit ) => unit . mul ( standardQuantityIssued ) . div ( gWei ( 1 ) ) ) ;
250
256
251
257
const issuanceReceipt = await setToken . issue ( standardQuantityIssued , TX_DEFAULTS ) ;
252
- // const { logs } = issuanceReceipt;
253
- // const formattedLogs = _.map(logs, (log) => extractLogEventAndArgs(log));
254
- // const expectedLogs = getExpectedIssueLogs(
255
- // componentAddresses,
256
- // quantitiesToTransfer,
257
- // setToken.address,
258
- // standardQuantityIssued,
259
- // testAccount,
260
- // );
261
- // expect(JSON.stringify(formattedLogs)).to.equal(JSON.stringify(expectedLogs));
258
+ const { logs } = issuanceReceipt ;
259
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
260
+ const expectedLogs = getExpectedIssueLogs (
261
+ componentAddresses ,
262
+ quantitiesToTransfer ,
263
+ setToken . address ,
264
+ standardQuantityIssued ,
265
+ testAccount ,
266
+ ) ;
267
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
262
268
assertTokenBalance ( setToken , standardQuantityIssued , testAccount ) ;
263
269
} ) ;
264
270
} ) ;
@@ -274,7 +280,18 @@ contract("{Set}", (accounts) => {
274
280
// Quantity A expected to be deduced, which is 1/2 of an A token
275
281
const quantity1 = standardQuantityIssued . mul ( thousandthGwei ) . div ( gWei ( 1 ) ) ;
276
282
277
- await setToken . issue ( standardQuantityIssued , TX_DEFAULTS ) ;
283
+ const issuanceReceipt = await setToken . issue ( standardQuantityIssued , TX_DEFAULTS ) ;
284
+ const { logs } = issuanceReceipt ;
285
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
286
+ const expectedLogs = getExpectedIssueLogs (
287
+ componentAddresses ,
288
+ [ quantity1 ] ,
289
+ setToken . address ,
290
+ standardQuantityIssued ,
291
+ testAccount ,
292
+ ) ;
293
+
294
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
278
295
279
296
assertTokenBalance ( components [ 0 ] , initialTokens . sub ( quantity1 ) , testAccount ) ;
280
297
assertTokenBalance ( setToken , standardQuantityIssued , testAccount ) ;
@@ -311,13 +328,17 @@ contract("{Set}", (accounts) => {
311
328
312
329
it ( `should work` , async ( ) => {
313
330
const redeemReceipt = await setToken . redeem ( standardQuantityIssued , TX_DEFAULTS ) ;
314
- const redeemLog = redeemReceipt . logs [ redeemReceipt . logs . length - 1 ] . args ;
315
-
316
- // The logs should have the right sender
317
- assert . strictEqual ( redeemLog . _sender , testAccount ) ;
331
+ const { logs } = redeemReceipt ;
332
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
333
+ const expectedLogs = getExpectedRedeemLogs (
334
+ componentAddresses ,
335
+ quantitiesToTransfer ,
336
+ setToken . address ,
337
+ standardQuantityIssued ,
338
+ testAccount ,
339
+ ) ;
318
340
319
- // The logs should have the right quantity
320
- expect ( redeemLog . _quantity ) . to . be . bignumber . equal ( standardQuantityIssued ) ;
341
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
321
342
322
343
const [ component1 , component2 ] = components ;
323
344
const [ units1 , units2 ] = units ;
@@ -341,7 +362,18 @@ contract("{Set}", (accounts) => {
341
362
it ( `should work` , async ( ) => {
342
363
await deployStandardSetAndIssue ( 60 , standardQuantityIssued ) ;
343
364
344
- await setToken . redeem ( standardQuantityIssued , TX_DEFAULTS ) ;
365
+ const redeemReceipt = await setToken . redeem ( standardQuantityIssued , TX_DEFAULTS ) ;
366
+ const { logs } = redeemReceipt ;
367
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
368
+ const expectedLogs = getExpectedRedeemLogs (
369
+ componentAddresses ,
370
+ quantitiesToTransfer ,
371
+ setToken . address ,
372
+ standardQuantityIssued ,
373
+ testAccount ,
374
+ ) ;
375
+
376
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
345
377
assertTokenBalance ( setToken , new BigNumber ( 0 ) , testAccount ) ;
346
378
} ) ;
347
379
} ) ;
@@ -353,7 +385,19 @@ contract("{Set}", (accounts) => {
353
385
} ) ;
354
386
355
387
it ( "should work" , async ( ) => {
356
- await setToken . redeem ( standardQuantityIssued , TX_DEFAULTS ) ;
388
+ const redeemReceipt = await setToken . redeem ( standardQuantityIssued , TX_DEFAULTS ) ;
389
+ const { logs } = redeemReceipt ;
390
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
391
+ const expectedLogs = getExpectedRedeemLogs (
392
+ componentAddresses ,
393
+ quantitiesToTransfer ,
394
+ setToken . address ,
395
+ standardQuantityIssued ,
396
+ testAccount ,
397
+ ) ;
398
+
399
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
400
+
357
401
const [ component1 ] = components ;
358
402
const [ units1 ] = units ;
359
403
@@ -382,7 +426,24 @@ contract("{Set}", (accounts) => {
382
426
const [ units1 , units2 , units3 ] = units ;
383
427
const [ quantity1 , quantity2 , quantity3 ] = quantitiesToTransfer ;
384
428
385
- await setToken . partialRedeem ( standardQuantityIssued , [ componentToExclude ] , TX_DEFAULTS ) ;
429
+ const partialRedeemReceipt = await setToken . partialRedeem (
430
+ standardQuantityIssued ,
431
+ [ componentToExclude ] ,
432
+ TX_DEFAULTS ,
433
+ ) ;
434
+
435
+ const { logs } = partialRedeemReceipt ;
436
+ const formattedLogs = _ . map ( logs , ( log ) => extractLogEventAndArgs ( log ) ) ;
437
+ const expectedLogs = getExpectedPartialRedeemLogs (
438
+ componentAddresses ,
439
+ [ componentToExclude ] ,
440
+ quantitiesToTransfer ,
441
+ setToken . address ,
442
+ standardQuantityIssued ,
443
+ testAccount ,
444
+ ) ;
445
+
446
+ expect ( JSON . stringify ( formattedLogs ) ) . to . equal ( JSON . stringify ( expectedLogs ) ) ;
386
447
387
448
assertTokenBalance ( setToken , new BigNumber ( 0 ) , testAccount ) ;
388
449
assertTokenBalance ( component1 , initialTokens . sub ( quantity1 ) , testAccount ) ;
@@ -416,7 +477,7 @@ contract("{Set}", (accounts) => {
416
477
} ) ;
417
478
} ) ;
418
479
419
- describe ( "Redeem Excluded" , async ( ) => {
480
+ describe . only ( "Redeem Excluded" , async ( ) => {
420
481
let componentExcluded : any ;
421
482
let componentAddressExcluded : Address ;
422
483
@@ -430,7 +491,7 @@ contract("{Set}", (accounts) => {
430
491
} ) ;
431
492
432
493
it ( "should work" , async ( ) => {
433
- await setToken . redeemExcluded ( quantitiesToTransfer [ 0 ] , componentAddressExcluded , TX_DEFAULTS ) ;
494
+ await setToken . redeemExcluded ( [ quantitiesToTransfer [ 0 ] ] , [ componentAddressExcluded ] , TX_DEFAULTS ) ;
434
495
435
496
assertTokenBalance ( componentExcluded , initialTokens , testAccount ) ;
436
497
@@ -441,8 +502,8 @@ contract("{Set}", (accounts) => {
441
502
it ( "should fail if the user doesn't have enough balance" , async ( ) => {
442
503
const largeQuantity = new BigNumber ( "1000000000000000000000000000000000000" ) ;
443
504
await expectRevertError ( setToken . redeemExcluded (
444
- largeQuantity ,
445
- componentAddressExcluded ,
505
+ [ largeQuantity ] ,
506
+ [ componentAddressExcluded ] ,
446
507
TX_DEFAULTS ,
447
508
) ) ;
448
509
} ) ;
0 commit comments