Skip to content

Commit 385c36f

Browse files
committed
fix erc20 tests with batchFee value limited to 200
1 parent ce934f2 commit 385c36f

File tree

1 file changed

+79
-78
lines changed

1 file changed

+79
-78
lines changed

packages/smart-contracts/test/contracts/BatchNoConversionErc20Payments.test.ts

Lines changed: 79 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
8787
token3Address = token3.address;
8888
batchAddress = batch.address;
8989

90-
await batch.connect(owner).setBatchFee(1000);
90+
await batch.connect(owner).setBatchFee(100); // 1% of batch fees
9191
// batch fee amount USD limited to 1$
9292
await batch.connect(owner).setBatchFeeAmountUSDLimit(BigNumber.from(1e8).div(1000));
9393
});
@@ -112,8 +112,8 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
112112

113113
describe('Batch working well: right args, and approvals', () => {
114114
it('Should pay 3 ERC20 payments with paymentRef and pay batch fee', async () => {
115-
await token1.connect(owner).transfer(spender3Address, 1000);
116-
await token1.connect(spender3).approve(batchAddress, 1000);
115+
await token1.connect(owner).transfer(spender3Address, 10000);
116+
await token1.connect(spender3).approve(batchAddress, 10000);
117117

118118
beforeERC20Balance1 = await token1.balanceOf(payee1);
119119
beforeERC20Balance2 = await token1.balanceOf(payee2);
@@ -124,28 +124,28 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
124124
[
125125
{
126126
recipient: payee1,
127-
requestAmount: 200,
127+
requestAmount: 2000,
128128
path: [token1Address],
129129
paymentReference: referenceExample1,
130-
feeAmount: 20,
130+
feeAmount: 200,
131131
maxToSpend: '0',
132132
maxRateTimespan: '0',
133133
},
134134
{
135135
recipient: payee2,
136-
requestAmount: 30,
136+
requestAmount: 300,
137137
path: [token1Address],
138138
paymentReference: referenceExample2,
139-
feeAmount: 2,
139+
feeAmount: 20,
140140
maxToSpend: '0',
141141
maxRateTimespan: '0',
142142
},
143143
{
144144
recipient: payee2,
145-
requestAmount: 40,
145+
requestAmount: 400,
146146
path: [token1Address],
147147
paymentReference: referenceExample3,
148-
feeAmount: 3,
148+
feeAmount: 30,
149149
maxToSpend: '0',
150150
maxRateTimespan: '0',
151151
},
@@ -156,62 +156,62 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
156156
),
157157
)
158158
.to.emit(token1, 'Transfer')
159-
.withArgs(spender3Address, batchAddress, 200 + 30 + 40 + 20 + 2 + 3)
159+
.withArgs(spender3Address, batchAddress, 2000 + 300 + 400 + 200 + 20 + 30)
160160
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
161161
.withArgs(
162162
token1Address,
163163
payee1,
164-
'200',
164+
'2000',
165165
ethers.utils.keccak256(referenceExample1),
166-
'20',
166+
'200',
167167
feeAddress,
168168
)
169169
.to.emit(token1, 'Transfer')
170170
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
171171
.withArgs(
172172
token1Address,
173173
payee2,
174-
'30',
174+
'300',
175175
ethers.utils.keccak256(referenceExample2),
176-
'2',
176+
'20',
177177
feeAddress,
178178
)
179179
.to.emit(token1, 'Transfer')
180180
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
181181
.withArgs(
182182
token1Address,
183183
payee2,
184-
'40',
184+
'400',
185185
ethers.utils.keccak256(referenceExample3),
186-
'3',
186+
'30',
187187
feeAddress,
188188
)
189189
// batch fee amount from the spender to feeAddress
190190
.to.emit(token1, 'Transfer')
191191
.withArgs(
192192
spender3Address,
193193
feeAddress,
194-
27, // batch fee amount = (200+30+40)*10%
194+
27, // batch fee amount = (2000+300+400)*1%
195195
);
196196

197197
afterERC20Balance1 = await token1.balanceOf(payee1);
198-
expect(afterERC20Balance1).to.be.equal(beforeERC20Balance1.add(200));
198+
expect(afterERC20Balance1).to.be.equal(beforeERC20Balance1.add(2000));
199199
afterERC20Balance2 = await token1.balanceOf(payee2);
200-
expect(afterERC20Balance2).to.be.equal(beforeERC20Balance2.add(30 + 40));
200+
expect(afterERC20Balance2).to.be.equal(beforeERC20Balance2.add(300 + 400));
201201
afterERC20Balance3 = await token1.balanceOf(spender3Address);
202202
expect(beforeERC20Balance3).to.be.equal(
203-
afterERC20Balance3.add(200 + 20 + 20 + (30 + 2 + 3) + (40 + 3 + 4)),
203+
afterERC20Balance3.add(2000 + 200 + 20 + (300 + 20 + 3) + (400 + 30 + 4)),
204204
);
205205
});
206206

207207
it('Should pay 3 ERC20 payments Multi tokens with paymentRef and pay batch fee', async () => {
208-
await token1.connect(owner).transfer(spender3Address, 1000);
209-
await token2.connect(owner).transfer(spender3Address, 1000);
210-
await token3.connect(owner).transfer(spender3Address, 1000);
208+
await token1.connect(owner).transfer(spender3Address, 10000);
209+
await token2.connect(owner).transfer(spender3Address, 10000);
210+
await token3.connect(owner).transfer(spender3Address, 10000);
211211

212-
await token1.connect(spender3).approve(batchAddress, 1000);
213-
await token2.connect(spender3).approve(batchAddress, 1000);
214-
await token3.connect(spender3).approve(batchAddress, 1000);
212+
await token1.connect(spender3).approve(batchAddress, 10000);
213+
await token2.connect(spender3).approve(batchAddress, 10000);
214+
await token3.connect(spender3).approve(batchAddress, 10000);
215215

216216
beforeERC20Balance1 = await token1.balanceOf(payee1);
217217
const beforeERC20Balance2_token2 = await token2.balanceOf(payee2);
@@ -227,28 +227,28 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
227227
[
228228
{
229229
recipient: payee1,
230-
requestAmount: 500,
230+
requestAmount: 5000,
231231
path: [token1Address],
232232
paymentReference: referenceExample1,
233-
feeAmount: 60,
233+
feeAmount: 600,
234234
maxToSpend: '0',
235235
maxRateTimespan: '0',
236236
},
237237
{
238238
recipient: payee2,
239-
requestAmount: 300,
239+
requestAmount: 3000,
240240
path: [token2Address],
241241
paymentReference: referenceExample2,
242-
feeAmount: 20,
242+
feeAmount: 200,
243243
maxToSpend: '0',
244244
maxRateTimespan: '0',
245245
},
246246
{
247247
recipient: payee2,
248-
requestAmount: 400,
248+
requestAmount: 4000,
249249
path: [token3Address],
250250
paymentReference: referenceExample3,
251-
feeAmount: 30,
251+
feeAmount: 300,
252252
maxToSpend: '0',
253253
maxRateTimespan: '0',
254254
},
@@ -260,74 +260,74 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
260260
)
261261
// Transfer event of each token from the spender to the batch proxy
262262
.to.emit(token1, 'Transfer')
263-
.withArgs(spender3Address, batchAddress, 500 + 60)
263+
.withArgs(spender3Address, batchAddress, 5000 + 600)
264264
.to.emit(token2, 'Transfer')
265-
.withArgs(spender3Address, batchAddress, 300 + 20)
265+
.withArgs(spender3Address, batchAddress, 3000 + 200)
266266
.to.emit(token3, 'Transfer')
267-
.withArgs(spender3Address, batchAddress, 400 + 30)
267+
.withArgs(spender3Address, batchAddress, 4000 + 300)
268268
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
269269
.withArgs(
270270
token1Address,
271271
payee1,
272-
'500',
272+
'5000',
273273
ethers.utils.keccak256(referenceExample1),
274-
'60',
274+
'600',
275275
feeAddress,
276276
)
277277
.to.emit(token2, 'Transfer')
278278
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
279279
.withArgs(
280280
token2Address,
281281
payee2,
282-
'300',
282+
'3000',
283283
ethers.utils.keccak256(referenceExample2),
284-
'20',
284+
'200',
285285
feeAddress,
286286
)
287287
.to.emit(token3, 'Transfer')
288288
.to.emit(erc20FeeProxy, 'TransferWithReferenceAndFee')
289289
.withArgs(
290290
token3Address,
291291
payee2,
292-
'400',
292+
'4000',
293293
ethers.utils.keccak256(referenceExample3),
294-
'30',
294+
'300',
295295
feeAddress,
296296
)
297297
// batch fee amount from the spender to feeAddress for each token
298298
.to.emit(token1, 'Transfer')
299299
.withArgs(
300300
spender3Address,
301301
feeAddress,
302-
50, // batch fee amount = 500*10%
302+
50, // batch fee amount = 5000*1%
303303
)
304304
.to.emit(token2, 'Transfer')
305305
.withArgs(spender3Address, feeAddress, 30)
306306
.to.emit(token3, 'Transfer')
307307
.withArgs(spender3Address, feeAddress, 40);
308308

309-
expect(await token1.balanceOf(payee1)).to.be.equal(beforeERC20Balance1.add(500));
310-
expect(await token2.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token2.add(300));
311-
expect(await token3.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token3.add(400));
309+
expect(await token1.balanceOf(payee1)).to.be.equal(beforeERC20Balance1.add(5000));
310+
expect(await token2.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token2.add(3000));
311+
expect(await token3.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token3.add(4000));
312312
expect(beforeERC20Balance3).to.be.equal(
313-
(await token1.balanceOf(spender3Address)).add(500 + 60 + 50),
313+
(await token1.balanceOf(spender3Address)).add(5000 + 600 + 50), // 50 batch fees
314314
);
315315

316-
expect(await token1.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token1.add(50 + 60));
317-
expect(await token2.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token2.add(20 + 30));
316+
expect(await token1.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token1.add(600 + 50)); // 50 batch fees
317+
expect(await token2.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token2.add(200 + 30)); // 30 batch fees
318318
expect(await token3.balanceOf(feeAddress)).to.be.equal(
319-
beforeFeeAddress_token3.add((30 + 40) * 1),
319+
beforeFeeAddress_token3.add((300 + 40) * 1), // 40 batch fees
320320
);
321321
});
322322

323323
it('Should pay 3 ERC20 payments Multi tokens, with one payment of 0 token', async () => {
324-
await token1.connect(owner).transfer(spender3Address, 1000);
325-
await token2.connect(owner).transfer(spender3Address, 1000);
326-
await token3.connect(owner).transfer(spender3Address, 1000);
324+
await token1.connect(owner).transfer(spender3Address, 10000);
325+
await token2.connect(owner).transfer(spender3Address, 10000);
326+
await token3.connect(owner).transfer(spender3Address, 10000);
327327

328-
await token1.connect(spender3).approve(batchAddress, 1000);
329-
await token2.connect(spender3).approve(batchAddress, 1000);
330-
await token3.connect(spender3).approve(batchAddress, 1000);
328+
await token1.connect(spender3).approve(batchAddress, 10000);
329+
await token2.connect(spender3).approve(batchAddress, 10000);
330+
await token3.connect(spender3).approve(batchAddress, 10000);
331331

332332
beforeERC20Balance1 = await token1.balanceOf(payee1);
333333
const beforeERC20Balance2_token2 = await token2.balanceOf(payee2);
@@ -342,10 +342,10 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
342342
[
343343
{
344344
recipient: payee1,
345-
requestAmount: 500,
345+
requestAmount: 5000,
346346
path: [token1Address],
347347
paymentReference: referenceExample1,
348-
feeAmount: 60,
348+
feeAmount: 600,
349349
maxToSpend: '0',
350350
maxRateTimespan: '0',
351351
},
@@ -360,10 +360,10 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
360360
},
361361
{
362362
recipient: payee2,
363-
requestAmount: 400,
363+
requestAmount: 4000,
364364
path: [token3Address],
365365
paymentReference: referenceExample3,
366-
feeAmount: 30,
366+
feeAmount: 300,
367367
maxToSpend: '0',
368368
maxRateTimespan: '0',
369369
},
@@ -378,35 +378,34 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
378378
);
379379

380380
await tx.wait();
381-
382-
expect(await token1.balanceOf(payee1)).to.be.equal(beforeERC20Balance1.add(500));
381+
expect(await token1.balanceOf(payee1)).to.be.equal(beforeERC20Balance1.add(5000));
383382
expect(await token2.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token2.add(0));
384-
expect(await token3.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token3.add(400));
383+
expect(await token3.balanceOf(payee2)).to.be.equal(beforeERC20Balance2_token3.add(4000));
385384
expect(beforeERC20Balance3).to.be.equal(
386-
(await token1.balanceOf(spender3Address)).add(500 + 60 + 50),
385+
(await token1.balanceOf(spender3Address)).add(5000 + 600 + 50),
387386
);
388387

389-
expect(await token1.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token1.add(50 + 60));
388+
expect(await token1.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token1.add(50 + 600));
390389
expect(await token2.balanceOf(feeAddress)).to.be.equal(beforeFeeAddress_token2.add(0));
391390
expect(await token3.balanceOf(feeAddress)).to.be.equal(
392-
beforeFeeAddress_token3.add((30 + 40) * 1),
391+
beforeFeeAddress_token3.add((300 + 40) * 1),
393392
);
394393
});
395394

396395
it('Should pay 4 ERC20 payments on 2 tokens', async () => {
397-
await token1.connect(owner).transfer(spender3Address, 1000);
398-
await token2.connect(owner).transfer(spender3Address, 1000);
396+
await token1.connect(owner).transfer(spender3Address, 10000);
397+
await token2.connect(owner).transfer(spender3Address, 10000);
399398

400-
await token1.connect(spender3).approve(batchAddress, 1000);
401-
await token2.connect(spender3).approve(batchAddress, 1000);
399+
await token1.connect(spender3).approve(batchAddress, 10000);
400+
await token2.connect(spender3).approve(batchAddress, 10000);
402401

403402
beforeERC20Balance1 = await token1.balanceOf(payee2);
404403
beforeERC20Balance2 = await token2.balanceOf(payee2);
405404
beforeERC20Balance3 = await token1.balanceOf(spender3Address);
406405
const beforeERC20Balance3Token2 = await token2.balanceOf(spender3Address);
407406

408-
const amount = 20;
409-
const feeAmount = 1;
407+
const amount = 200;
408+
const feeAmount = 10;
410409

411410
const tx = await batch.connect(spender3).batchMultiERC20Payments(
412411
[
@@ -445,21 +444,23 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
445444
expect(afterERC20Balance2).to.be.equal(beforeERC20Balance2.add(amount * 2));
446445

447446
afterERC20Balance3 = await token1.balanceOf(spender3Address);
448-
expect(beforeERC20Balance3).to.be.equal(afterERC20Balance3.add((20 + 1 + 2) * 2));
447+
expect(beforeERC20Balance3).to.be.equal(afterERC20Balance3.add((200 + 10 + 2) * 2));
449448

450449
const afterERC20Balance3Token2 = await token2.balanceOf(spender3Address);
451-
expect(beforeERC20Balance3Token2).to.be.equal(afterERC20Balance3Token2.add((20 + 1 + 2) * 2));
450+
expect(beforeERC20Balance3Token2).to.be.equal(
451+
afterERC20Balance3Token2.add((200 + 10 + 2) * 2),
452+
);
452453
});
453454

454455
it('Should pay 10 ERC20 payments', async () => {
455-
await token1.connect(owner).transfer(spender3Address, 1000);
456-
await token1.connect(spender3).approve(batchAddress, 1000);
456+
await token1.connect(owner).transfer(spender3Address, 10000);
457+
await token1.connect(spender3).approve(batchAddress, 10000);
457458

458459
beforeERC20Balance1 = await token1.balanceOf(payee1);
459460
const beforeFeeAddress_token1 = await token1.balanceOf(feeAddress);
460461

461-
const amount = 20;
462-
const feeAmount = 10;
462+
const amount = 200;
463+
const feeAmount = 100;
463464
const nbTxs = 10;
464465

465466
const tx = await batch.connect(spender3).batchERC20Payments(
@@ -489,7 +490,7 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
489490
expect(afterERC20Balance1).to.be.equal(beforeERC20Balance1.add(amount * nbTxs));
490491
const afterFeeAddress_token1 = await token1.balanceOf(feeAddress);
491492
expect(afterFeeAddress_token1).to.be.equal(
492-
beforeFeeAddress_token1.add(feeAmount * nbTxs + (amount * nbTxs) / 10),
493+
beforeFeeAddress_token1.add(feeAmount * nbTxs + (amount * nbTxs) / 100),
493494
);
494495
});
495496

0 commit comments

Comments
 (0)