This repository has been archived by the owner on May 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 53
/
reservesDonate.js
126 lines (92 loc) · 5.13 KB
/
reservesDonate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const et = require('./lib/eTestLib');
et.testSet({
desc: "donate to reserves",
preActions: ctx => {
let actions = [];
for (let from of [ctx.wallet, ctx.wallet2, ctx.wallet3]) {
actions.push({ from, send: 'tokens.TST.mint', args: [from.address, et.units(100)], });
actions.push({ from, send: 'tokens.TST.approve', args: [ctx.contracts.euler.address, et.MaxUint256,], });
actions.push({ from, send: 'tokens.TST9.mint', args: [from.address, et.units(100, 6)], });
actions.push({ from, send: 'tokens.TST9.approve', args: [ctx.contracts.euler.address, et.MaxUint256,], });
}
actions.push({ send: 'markets.activateMarket', args: [ctx.contracts.tokens.TST.address], });
actions.push({ send: 'markets.activateMarket', args: [ctx.contracts.tokens.TST9.address], });
return actions;
},
})
.test({
desc: "donate to reserves - basic",
actions: ctx => [
{ send: 'eTokens.eTST.deposit', args: [0, et.eth(10)] },
{ call: 'eTokens.eTST.totalSupply', equals: [et.eth(10), '0.000000001' ], onResult: r => {
ctx.stash.ts = r;
} },
{ send: 'eTokens.eTST.donateToReserves', args: [0, et.eth(1)], onLogs: logs => {
et.expect(logs.length).to.equal(4);
et.expect(logs[0].name).to.equal('RequestDonate');
et.expect(logs[0].args.account).to.equal(ctx.wallet.address);
et.expect(logs[0].args.amount).to.equal(et.eth(1));
et.expect(logs[1].name).to.equal('Withdraw');
et.expect(logs[1].args.underlying).to.equal(ctx.contracts.tokens.TST.address);
et.expect(logs[1].args.account).to.equal(ctx.wallet.address);
et.expect(logs[1].args.amount).to.equal(et.eth(1));
et.expect(logs[2].name).to.equal('Transfer');
et.expect(logs[2].args.from).to.equal(ctx.wallet.address);
et.expect(logs[2].args.to).to.equal(et.AddressZero);
et.expect(logs[2].args.value).to.equal(et.eth(1));
} },
{ call: 'eTokens.eTST.totalSupply', equals: () => ctx.stash.ts },
{ call: 'eTokens.eTST.reserveBalance', equals: et.eth(1).add(et.DefaultReserve) },
{ call: 'eTokens.eTST.balanceOf', args: [ctx.wallet.address], equals: [et.eth(9), '0.000000001'] },
{ call: 'tokens.TST.balanceOf', args: [ctx.contracts.euler.address], equals: et.eth(10), },
],
})
.test({
desc: "donate to reserves - non-18 decimal places token",
actions: ctx => [
{ send: 'eTokens.eTST9.deposit', args: [0, et.units(10, 6)] },
{ call: 'eTokens.eTST9.totalSupply', equals: [et.eth(10), '0.000000001'], onResult: r => {
ctx.stash.ts = r;
} },
{ send: 'eTokens.eTST9.donateToReserves', args: [0, et.eth(1)], onLogs: logs => {
et.expect(logs.length).to.equal(4);
et.expect(logs[0].name).to.equal('RequestDonate');
et.expect(logs[0].args.account).to.equal(ctx.wallet.address);
et.expect(logs[0].args.amount).to.equal(et.eth(1));
et.expect(logs[1].name).to.equal('Withdraw');
et.expect(logs[1].args.underlying).to.equal(ctx.contracts.tokens.TST9.address);
et.expect(logs[1].args.account).to.equal(ctx.wallet.address);
et.expect(logs[1].args.amount).to.equal(et.eth(1));
et.expect(logs[2].name).to.equal('Transfer');
et.expect(logs[2].args.from).to.equal(ctx.wallet.address);
et.expect(logs[2].args.to).to.equal(et.AddressZero);
et.expect(logs[2].args.value).to.equal(et.eth(1));
} },
{ call: 'eTokens.eTST9.totalSupply', equals: () => ctx.stash.ts },
{ call: 'eTokens.eTST9.totalSupplyUnderlying', equals: [et.units(10, 6), '0.000000001'] },
{ call: 'eTokens.eTST9.reserveBalance', equals: et.eth(1).add(et.DefaultReserve) },
{ call: 'eTokens.eTST9.reserveBalanceUnderlying', equals: [et.units(1, 6), '0.000000001'] },
{ call: 'eTokens.eTST9.balanceOf', args: [ctx.wallet.address], equals: [et.eth(9), '0.000000001'] },
{ call: 'eTokens.eTST9.balanceOfUnderlying', args: [ctx.wallet.address], equals: [et.units(9, 6), '0.000000001'] },
{ call: 'tokens.TST9.balanceOf', args: [ctx.contracts.euler.address], equals: et.units(10, 6), },
],
})
.test({
desc: "donate to reserves - max uint",
actions: ctx => [
{ send: 'eTokens.eTST.deposit', args: [0, et.eth(10)] },
{ send: 'eTokens.eTST.donateToReserves', args: [0, et.MaxUint256] },
{ call: 'eTokens.eTST.totalSupply', equals: [et.eth(10), '0.000000001'] },
{ call: 'eTokens.eTST.reserveBalance', equals: et.eth(10).add(et.DefaultReserve) },
{ call: 'eTokens.eTST.balanceOf', args: [ctx.wallet.address], equals: 0 },
{ call: 'tokens.TST.balanceOf', args: [ctx.contracts.euler.address], equals: et.eth(10), },
],
})
.test({
desc: "donate to reserves - insufficient balance",
actions: ctx => [
{ send: 'eTokens.eTST.deposit', args: [0, et.eth(10)]},
{ send: 'eTokens.eTST.donateToReserves', args: [0, et.eth(11)], expectError: 'e/insufficient-balance' },
],
})
.run();