Skip to content

Commit fc5a388

Browse files
test: updated market tests
1 parent c5fa4f0 commit fc5a388

1 file changed

Lines changed: 111 additions & 43 deletions

File tree

test/market.spec.ts

Lines changed: 111 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,13 @@ describe('Market', () => {
169169

170170
const stakeTx = market.stakeWeederToken(19_700_000 * 10 ** DECIMALS);
171171

172-
await expect(stakeTx).to.emit(market, 'WeederTokenStaked');
172+
await expect(stakeTx)
173+
.to.emit(weederToken, 'Transfer')
174+
.withArgs(owner.address, market.address, 19_700_000 * 10 ** DECIMALS)
175+
.and.to.emit(market, 'WeederTokenStaked')
176+
.withArgs(owner.address, 19_700_000 * 10 ** DECIMALS)
177+
.and.not.to.emit(market, 'AccountAccrueChanged')
178+
.and.not.to.emit(market, 'DividendsCollected');
173179

174180
const shares = await market.share(owner.address);
175181

@@ -189,7 +195,13 @@ describe('Market', () => {
189195
.connect(user1)
190196
.stakeWeederToken(100_000 * 10 ** DECIMALS);
191197

192-
await expect(stakeTx).to.emit(market, 'WeederTokenStaked');
198+
await expect(stakeTx)
199+
.to.emit(weederToken, 'Transfer')
200+
.withArgs(user1.address, market.address, 100_000 * 10 ** DECIMALS)
201+
.and.to.emit(market, 'WeederTokenStaked')
202+
.withArgs(user1.address, 100_000 * 10 ** DECIMALS)
203+
.and.not.to.emit(market, 'AccountAccrueChanged')
204+
.and.not.to.emit(market, 'DividendsCollected');
193205

194206
const shares = await market.share(user1.address);
195207

@@ -209,7 +221,13 @@ describe('Market', () => {
209221
.connect(user2)
210222
.stakeWeederToken(100_000 * 10 ** DECIMALS);
211223

212-
await expect(stakeTx).to.emit(market, 'WeederTokenStaked');
224+
await expect(stakeTx)
225+
.to.emit(weederToken, 'Transfer')
226+
.withArgs(user2.address, market.address, 100_000 * 10 ** DECIMALS)
227+
.to.emit(market, 'WeederTokenStaked')
228+
.withArgs(user2.address, 100_000 * 10 ** DECIMALS)
229+
.and.not.to.emit(market, 'AccountAccrueChanged')
230+
.and.not.to.emit(market, 'DividendsCollected');
213231

214232
const shares = await market.share(user2.address);
215233

@@ -229,7 +247,13 @@ describe('Market', () => {
229247
.connect(user3)
230248
.stakeWeederToken(100_000 * 10 ** DECIMALS);
231249

232-
await expect(stakeTx).to.emit(market, 'WeederTokenStaked');
250+
await expect(stakeTx)
251+
.to.emit(weederToken, 'Transfer')
252+
.withArgs(user3.address, market.address, 100_000 * 10 ** DECIMALS)
253+
.to.emit(market, 'WeederTokenStaked')
254+
.withArgs(user3.address, 100_000 * 10 ** DECIMALS)
255+
.and.not.to.emit(market, 'AccountAccrueChanged')
256+
.and.not.to.emit(market, 'DividendsCollected');
233257

234258
const shares = await market.share(user3.address);
235259

@@ -284,18 +308,25 @@ describe('Market', () => {
284308
});
285309

286310
it('should mint 1000 USDT to vault', async () => {
287-
await usdtToken.mint(vault.address, '1000').then((tx) => tx.wait());
311+
const tx = usdtToken.mint(vault.address, '1000');
312+
313+
await expect(tx)
314+
.to.emit(usdtToken, 'Transfer')
315+
.withArgs(ethers.constants.AddressZero, vault.address, '1000');
288316

289317
const balance = await usdtToken.balanceOf(vault.address);
290318

291319
return expect(balance).to.equal('1000');
292320
});
293321

294322
it('should allow 1000 USDT transfer for market', async () => {
295-
await usdtToken
323+
const tx = await usdtToken
296324
.connect(vault)
297-
.increaseAllowance(market.address, '1000')
298-
.then((tx) => tx.wait());
325+
.increaseAllowance(market.address, '1000');
326+
327+
await expect(tx)
328+
.to.emit(usdtToken, 'Approval')
329+
.withArgs(vault.address, market.address, '1000');
299330

300331
const allowance = await usdtToken.allowance(
301332
vault.address,
@@ -356,7 +387,7 @@ describe('Market', () => {
356387
});
357388

358389
describe('collect dividends', () => {
359-
it('should calculate earned USDT dividends', async () => {
390+
it('should calculate owner earned USDT dividends', async () => {
360391
const dividends = await market.availableTokenDividends(
361392
owner.address,
362393
usdtToken.address,
@@ -370,7 +401,9 @@ describe('Market', () => {
370401

371402
await expect(tx)
372403
.to.emit(market, 'AccountAccrueChanged')
373-
.withArgs(user1.address, usdtToken.address, '500000', owner.address);
404+
.withArgs(user1.address, usdtToken.address, '500000', owner.address)
405+
.and.to.emit(market, 'DividendsCollected')
406+
.withArgs('5', usdtToken.address, user1.address, owner.address);
374407

375408
const accrue = await market.currentAccountAccrue(
376409
user1.address,
@@ -385,8 +418,16 @@ describe('Market', () => {
385418

386419
describe('create and complete order 2', () => {
387420
it('should add order 2 for 1000 USD', async () => {
388-
const tx = await market.createOrder('2', usdtToken.address, '1000');
389-
await tx.wait();
421+
const tx = market.createOrder('2', usdtToken.address, '1000');
422+
423+
await expect(tx)
424+
.to.emit(market, 'OrderChanged')
425+
.withArgs(
426+
'2',
427+
[usdtToken.address, 0, '1000', OrderStatus.CREATED],
428+
owner.address,
429+
);
430+
390431
const order = await market.order('2');
391432

392433
expect(order.token).to.equal(usdtToken.address);
@@ -396,16 +437,23 @@ describe('Market', () => {
396437
});
397438

398439
it('should mint 1000 USDT to vault', async () => {
399-
await usdtToken.mint(vault.address, '1000').then((tx) => tx.wait());
440+
const tx = usdtToken.mint(vault.address, '1000');
441+
442+
await expect(tx)
443+
.to.emit(usdtToken, 'Transfer')
444+
.withArgs(ethers.constants.AddressZero, vault.address, '1000');
400445

401446
return expect(await usdtToken.balanceOf(vault.address)).to.equal('1000');
402447
});
403448

404449
it('should allow 1000 USDT transfer for market', async () => {
405-
await usdtToken
450+
const tx = usdtToken
406451
.connect(vault)
407-
.increaseAllowance(market.address, '1000')
408-
.then((tx) => tx.wait());
452+
.increaseAllowance(market.address, '1000');
453+
454+
await expect(tx)
455+
.to.emit(usdtToken, 'Approval')
456+
.withArgs(vault.address, market.address, '1000');
409457

410458
const allowance = await usdtToken.allowance(
411459
vault.address,
@@ -416,9 +464,17 @@ describe('Market', () => {
416464
});
417465

418466
it('should complete order 2', async () => {
419-
const tx = await market.completeOrder('2', '1000');
467+
const tx = market.completeOrder('2', '1000');
420468

421-
await tx.wait();
469+
await expect(tx)
470+
.to.emit(market, 'OrderChanged')
471+
.withArgs(
472+
'2',
473+
[usdtToken.address, '1000', '1000', OrderStatus.COMPLETED],
474+
owner.address,
475+
)
476+
.and.to.emit(market, 'MarketAccrueChanged')
477+
.withArgs(usdtToken.address, '1000000', owner.address);
422478

423479
const accrue = await market.currentMarketAccrue(usdtToken.address);
424480

@@ -430,7 +486,7 @@ describe('Market', () => {
430486
});
431487

432488
describe('collect all dividends', () => {
433-
it('should calculate user 1 earned USDT dividends', async () => {
489+
it('should calculate user_1 earned USDT dividends', async () => {
434490
const dividends = await market.availableTokenDividends(
435491
user1.address,
436492
usdtToken.address,
@@ -439,13 +495,14 @@ describe('Market', () => {
439495
return expect(dividends).to.equal('5');
440496
});
441497

442-
it('should collect user 1 USDT dividends', async () => {
443-
const tx = await market.accrueTokenDividends(
444-
user1.address,
445-
usdtToken.address,
446-
);
498+
it('should collect user_1 USDT dividends', async () => {
499+
const tx = market.accrueTokenDividends(user1.address, usdtToken.address);
447500

448-
await tx.wait();
501+
await expect(tx)
502+
.to.emit(market, 'AccountAccrueChanged')
503+
.withArgs(user1.address, usdtToken.address, '1000000', owner.address)
504+
.and.to.emit(market, 'DividendsCollected')
505+
.withArgs('5', usdtToken.address, user1.address, owner.address);
449506

450507
const accrue = await market.currentAccountAccrue(
451508
user1.address,
@@ -457,7 +514,7 @@ describe('Market', () => {
457514
return expect(accrue).to.equal('1000000');
458515
});
459516

460-
it('should calculate user 2 earned USDT dividends', async () => {
517+
it('should calculate user_2 earned USDT dividends', async () => {
461518
const dividends = await market.availableTokenDividends(
462519
user2.address,
463520
usdtToken.address,
@@ -466,24 +523,26 @@ describe('Market', () => {
466523
return expect(dividends).to.equal('10');
467524
});
468525

469-
it('should collect user 2 USDT dividends', async () => {
526+
it('should collect user_2 USDT dividends', async () => {
470527
const tx = market.accrueTokenDividends(user2.address, usdtToken.address);
471528

472529
await expect(tx)
473530
.to.emit(market, 'AccountAccrueChanged')
474-
.withArgs(user2.address, usdtToken.address, '1000000', owner.address);
531+
.withArgs(user2.address, usdtToken.address, '1000000', owner.address)
532+
.and.to.emit(market, 'DividendsCollected')
533+
.withArgs('10', usdtToken.address, user2.address, owner.address);
475534

476535
const accrue = await market.currentAccountAccrue(
477536
user2.address,
478537
usdtToken.address,
479538
);
480539

481-
expect(await usdtToken.balanceOf(user1.address)).to.equal('10');
540+
expect(await usdtToken.balanceOf(user2.address)).to.equal('10');
482541
expect(await usdtToken.balanceOf(market.address)).to.equal('1980');
483542
return expect(accrue).to.equal('1000000');
484543
});
485544

486-
it('should calculate user 3 earned USDT dividends', async () => {
545+
it('should calculate user_3 earned USDT dividends', async () => {
487546
const dividends = await market.availableTokenDividends(
488547
user3.address,
489548
usdtToken.address,
@@ -492,19 +551,21 @@ describe('Market', () => {
492551
return expect(dividends).to.equal('10');
493552
});
494553

495-
it('should collect user 3 USDT dividends', async () => {
554+
it('should collect user_3 USDT dividends', async () => {
496555
const tx = market.accrueTokenDividends(user3.address, usdtToken.address);
497556

498557
await expect(tx)
499558
.to.emit(market, 'AccountAccrueChanged')
500-
.withArgs(user3.address, usdtToken.address, '1000000', owner.address);
559+
.withArgs(user3.address, usdtToken.address, '1000000', owner.address)
560+
.and.to.emit(market, 'DividendsCollected')
561+
.withArgs('10', usdtToken.address, user3.address, owner.address);
501562

502563
const accrue = await market.currentAccountAccrue(
503564
user3.address,
504565
usdtToken.address,
505566
);
506567

507-
expect(await usdtToken.balanceOf(user1.address)).to.equal('10');
568+
expect(await usdtToken.balanceOf(user3.address)).to.equal('10');
508569
expect(await usdtToken.balanceOf(market.address)).to.equal('1970');
509570
return expect(accrue).to.equal('1000000');
510571
});
@@ -514,25 +575,32 @@ describe('Market', () => {
514575
it('should transfer 100k weeder tokens from owner to user 1', async () => {
515576
expect(await usdtToken.balanceOf(owner.address)).to.equal('0');
516577

517-
const tx = weederToken.transfer(user1.address, 100_000 * 10 ** DECIMALS);
578+
const tx = market.redeemWeederToken(100_000 * 10 ** DECIMALS);
518579

519580
await expect(tx)
520581
.to.emit(market, 'AccountAccrueChanged')
521-
.withArgs(owner.address, usdtToken.address, weederToken.address, [
522-
'2000',
523-
])
524-
.and.to.emit(market, 'AccountAccrueChanged')
525-
.withArgs(user1.address, usdtToken.address, weederToken.address, [
526-
'2000',
527-
]);
582+
.withArgs(owner.address, usdtToken.address, '1000000', owner.address)
583+
.and.to.emit(market, 'DividendsCollected')
584+
.withArgs('1970', usdtToken.address, owner.address, owner.address)
585+
.and.to.emit(market, 'WeederTokenRedeemed')
586+
.withArgs(owner.address, 100_000 * 10 ** DECIMALS);
587+
588+
const txTransfer = weederToken.transfer(
589+
user1.address,
590+
100_000 * 10 ** DECIMALS,
591+
);
592+
593+
await expect(txTransfer)
594+
.to.emit(weederToken, 'Transfer')
595+
.withArgs(owner.address, user1.address, 100_000 * 10 ** DECIMALS);
528596

529597
const ownerWeederBalance = await weederToken.balanceOf(owner.address);
530598
const user1WeederBalance = await weederToken.balanceOf(user1.address);
531599
const ownerUsdtBalance = await usdtToken.balanceOf(owner.address);
532600
const user1UsdtBalance = await usdtToken.balanceOf(user1.address);
533601

534-
expect(ownerWeederBalance).to.equal(19_600_000 * 10 ** DECIMALS);
535-
expect(user1WeederBalance).to.equal(200_000 * 10 ** DECIMALS);
602+
expect(ownerWeederBalance).to.equal(0);
603+
expect(user1WeederBalance).to.equal(100_000 * 10 ** DECIMALS);
536604
expect(ownerUsdtBalance).to.equal(1970);
537605
return expect(user1UsdtBalance).to.equal(10);
538606
});

0 commit comments

Comments
 (0)