@@ -87,7 +87,7 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
87
87
token3Address = token3 . address ;
88
88
batchAddress = batch . address ;
89
89
90
- await batch . connect ( owner ) . setBatchFee ( 1000 ) ;
90
+ await batch . connect ( owner ) . setBatchFee ( 100 ) ; // 1% of batch fees
91
91
// batch fee amount USD limited to 1$
92
92
await batch . connect ( owner ) . setBatchFeeAmountUSDLimit ( BigNumber . from ( 1e8 ) . div ( 1000 ) ) ;
93
93
} ) ;
@@ -112,8 +112,8 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
112
112
113
113
describe ( 'Batch working well: right args, and approvals' , ( ) => {
114
114
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 ) ;
117
117
118
118
beforeERC20Balance1 = await token1 . balanceOf ( payee1 ) ;
119
119
beforeERC20Balance2 = await token1 . balanceOf ( payee2 ) ;
@@ -124,28 +124,28 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
124
124
[
125
125
{
126
126
recipient : payee1 ,
127
- requestAmount : 200 ,
127
+ requestAmount : 2000 ,
128
128
path : [ token1Address ] ,
129
129
paymentReference : referenceExample1 ,
130
- feeAmount : 20 ,
130
+ feeAmount : 200 ,
131
131
maxToSpend : '0' ,
132
132
maxRateTimespan : '0' ,
133
133
} ,
134
134
{
135
135
recipient : payee2 ,
136
- requestAmount : 30 ,
136
+ requestAmount : 300 ,
137
137
path : [ token1Address ] ,
138
138
paymentReference : referenceExample2 ,
139
- feeAmount : 2 ,
139
+ feeAmount : 20 ,
140
140
maxToSpend : '0' ,
141
141
maxRateTimespan : '0' ,
142
142
} ,
143
143
{
144
144
recipient : payee2 ,
145
- requestAmount : 40 ,
145
+ requestAmount : 400 ,
146
146
path : [ token1Address ] ,
147
147
paymentReference : referenceExample3 ,
148
- feeAmount : 3 ,
148
+ feeAmount : 30 ,
149
149
maxToSpend : '0' ,
150
150
maxRateTimespan : '0' ,
151
151
} ,
@@ -156,62 +156,62 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
156
156
) ,
157
157
)
158
158
. to . emit ( token1 , 'Transfer' )
159
- . withArgs ( spender3Address , batchAddress , 200 + 30 + 40 + 20 + 2 + 3 )
159
+ . withArgs ( spender3Address , batchAddress , 2000 + 300 + 400 + 200 + 20 + 30 )
160
160
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
161
161
. withArgs (
162
162
token1Address ,
163
163
payee1 ,
164
- '200 ' ,
164
+ '2000 ' ,
165
165
ethers . utils . keccak256 ( referenceExample1 ) ,
166
- '20 ' ,
166
+ '200 ' ,
167
167
feeAddress ,
168
168
)
169
169
. to . emit ( token1 , 'Transfer' )
170
170
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
171
171
. withArgs (
172
172
token1Address ,
173
173
payee2 ,
174
- '30 ' ,
174
+ '300 ' ,
175
175
ethers . utils . keccak256 ( referenceExample2 ) ,
176
- '2 ' ,
176
+ '20 ' ,
177
177
feeAddress ,
178
178
)
179
179
. to . emit ( token1 , 'Transfer' )
180
180
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
181
181
. withArgs (
182
182
token1Address ,
183
183
payee2 ,
184
- '40 ' ,
184
+ '400 ' ,
185
185
ethers . utils . keccak256 ( referenceExample3 ) ,
186
- '3 ' ,
186
+ '30 ' ,
187
187
feeAddress ,
188
188
)
189
189
// batch fee amount from the spender to feeAddress
190
190
. to . emit ( token1 , 'Transfer' )
191
191
. withArgs (
192
192
spender3Address ,
193
193
feeAddress ,
194
- 27 , // batch fee amount = (200+30+40)*10 %
194
+ 27 , // batch fee amount = (2000+300+400)*1 %
195
195
) ;
196
196
197
197
afterERC20Balance1 = await token1 . balanceOf ( payee1 ) ;
198
- expect ( afterERC20Balance1 ) . to . be . equal ( beforeERC20Balance1 . add ( 200 ) ) ;
198
+ expect ( afterERC20Balance1 ) . to . be . equal ( beforeERC20Balance1 . add ( 2000 ) ) ;
199
199
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 ) ) ;
201
201
afterERC20Balance3 = await token1 . balanceOf ( spender3Address ) ;
202
202
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 ) ) ,
204
204
) ;
205
205
} ) ;
206
206
207
207
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 ) ;
211
211
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 ) ;
215
215
216
216
beforeERC20Balance1 = await token1 . balanceOf ( payee1 ) ;
217
217
const beforeERC20Balance2_token2 = await token2 . balanceOf ( payee2 ) ;
@@ -227,28 +227,28 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
227
227
[
228
228
{
229
229
recipient : payee1 ,
230
- requestAmount : 500 ,
230
+ requestAmount : 5000 ,
231
231
path : [ token1Address ] ,
232
232
paymentReference : referenceExample1 ,
233
- feeAmount : 60 ,
233
+ feeAmount : 600 ,
234
234
maxToSpend : '0' ,
235
235
maxRateTimespan : '0' ,
236
236
} ,
237
237
{
238
238
recipient : payee2 ,
239
- requestAmount : 300 ,
239
+ requestAmount : 3000 ,
240
240
path : [ token2Address ] ,
241
241
paymentReference : referenceExample2 ,
242
- feeAmount : 20 ,
242
+ feeAmount : 200 ,
243
243
maxToSpend : '0' ,
244
244
maxRateTimespan : '0' ,
245
245
} ,
246
246
{
247
247
recipient : payee2 ,
248
- requestAmount : 400 ,
248
+ requestAmount : 4000 ,
249
249
path : [ token3Address ] ,
250
250
paymentReference : referenceExample3 ,
251
- feeAmount : 30 ,
251
+ feeAmount : 300 ,
252
252
maxToSpend : '0' ,
253
253
maxRateTimespan : '0' ,
254
254
} ,
@@ -260,74 +260,74 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
260
260
)
261
261
// Transfer event of each token from the spender to the batch proxy
262
262
. to . emit ( token1 , 'Transfer' )
263
- . withArgs ( spender3Address , batchAddress , 500 + 60 )
263
+ . withArgs ( spender3Address , batchAddress , 5000 + 600 )
264
264
. to . emit ( token2 , 'Transfer' )
265
- . withArgs ( spender3Address , batchAddress , 300 + 20 )
265
+ . withArgs ( spender3Address , batchAddress , 3000 + 200 )
266
266
. to . emit ( token3 , 'Transfer' )
267
- . withArgs ( spender3Address , batchAddress , 400 + 30 )
267
+ . withArgs ( spender3Address , batchAddress , 4000 + 300 )
268
268
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
269
269
. withArgs (
270
270
token1Address ,
271
271
payee1 ,
272
- '500 ' ,
272
+ '5000 ' ,
273
273
ethers . utils . keccak256 ( referenceExample1 ) ,
274
- '60 ' ,
274
+ '600 ' ,
275
275
feeAddress ,
276
276
)
277
277
. to . emit ( token2 , 'Transfer' )
278
278
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
279
279
. withArgs (
280
280
token2Address ,
281
281
payee2 ,
282
- '300 ' ,
282
+ '3000 ' ,
283
283
ethers . utils . keccak256 ( referenceExample2 ) ,
284
- '20 ' ,
284
+ '200 ' ,
285
285
feeAddress ,
286
286
)
287
287
. to . emit ( token3 , 'Transfer' )
288
288
. to . emit ( erc20FeeProxy , 'TransferWithReferenceAndFee' )
289
289
. withArgs (
290
290
token3Address ,
291
291
payee2 ,
292
- '400 ' ,
292
+ '4000 ' ,
293
293
ethers . utils . keccak256 ( referenceExample3 ) ,
294
- '30 ' ,
294
+ '300 ' ,
295
295
feeAddress ,
296
296
)
297
297
// batch fee amount from the spender to feeAddress for each token
298
298
. to . emit ( token1 , 'Transfer' )
299
299
. withArgs (
300
300
spender3Address ,
301
301
feeAddress ,
302
- 50 , // batch fee amount = 500*10 %
302
+ 50 , // batch fee amount = 5000*1 %
303
303
)
304
304
. to . emit ( token2 , 'Transfer' )
305
305
. withArgs ( spender3Address , feeAddress , 30 )
306
306
. to . emit ( token3 , 'Transfer' )
307
307
. withArgs ( spender3Address , feeAddress , 40 ) ;
308
308
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 ) ) ;
312
312
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
314
314
) ;
315
315
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
318
318
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
320
320
) ;
321
321
} ) ;
322
322
323
323
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 ) ;
327
327
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 ) ;
331
331
332
332
beforeERC20Balance1 = await token1 . balanceOf ( payee1 ) ;
333
333
const beforeERC20Balance2_token2 = await token2 . balanceOf ( payee2 ) ;
@@ -342,10 +342,10 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
342
342
[
343
343
{
344
344
recipient : payee1 ,
345
- requestAmount : 500 ,
345
+ requestAmount : 5000 ,
346
346
path : [ token1Address ] ,
347
347
paymentReference : referenceExample1 ,
348
- feeAmount : 60 ,
348
+ feeAmount : 600 ,
349
349
maxToSpend : '0' ,
350
350
maxRateTimespan : '0' ,
351
351
} ,
@@ -360,10 +360,10 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
360
360
} ,
361
361
{
362
362
recipient : payee2 ,
363
- requestAmount : 400 ,
363
+ requestAmount : 4000 ,
364
364
path : [ token3Address ] ,
365
365
paymentReference : referenceExample3 ,
366
- feeAmount : 30 ,
366
+ feeAmount : 300 ,
367
367
maxToSpend : '0' ,
368
368
maxRateTimespan : '0' ,
369
369
} ,
@@ -378,35 +378,34 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
378
378
) ;
379
379
380
380
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 ) ) ;
383
382
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 ) ) ;
385
384
expect ( beforeERC20Balance3 ) . to . be . equal (
386
- ( await token1 . balanceOf ( spender3Address ) ) . add ( 500 + 60 + 50 ) ,
385
+ ( await token1 . balanceOf ( spender3Address ) ) . add ( 5000 + 600 + 50 ) ,
387
386
) ;
388
387
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 ) ) ;
390
389
expect ( await token2 . balanceOf ( feeAddress ) ) . to . be . equal ( beforeFeeAddress_token2 . add ( 0 ) ) ;
391
390
expect ( await token3 . balanceOf ( feeAddress ) ) . to . be . equal (
392
- beforeFeeAddress_token3 . add ( ( 30 + 40 ) * 1 ) ,
391
+ beforeFeeAddress_token3 . add ( ( 300 + 40 ) * 1 ) ,
393
392
) ;
394
393
} ) ;
395
394
396
395
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 ) ;
399
398
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 ) ;
402
401
403
402
beforeERC20Balance1 = await token1 . balanceOf ( payee2 ) ;
404
403
beforeERC20Balance2 = await token2 . balanceOf ( payee2 ) ;
405
404
beforeERC20Balance3 = await token1 . balanceOf ( spender3Address ) ;
406
405
const beforeERC20Balance3Token2 = await token2 . balanceOf ( spender3Address ) ;
407
406
408
- const amount = 20 ;
409
- const feeAmount = 1 ;
407
+ const amount = 200 ;
408
+ const feeAmount = 10 ;
410
409
411
410
const tx = await batch . connect ( spender3 ) . batchMultiERC20Payments (
412
411
[
@@ -445,21 +444,23 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
445
444
expect ( afterERC20Balance2 ) . to . be . equal ( beforeERC20Balance2 . add ( amount * 2 ) ) ;
446
445
447
446
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 ) ) ;
449
448
450
449
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
+ ) ;
452
453
} ) ;
453
454
454
455
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 ) ;
457
458
458
459
beforeERC20Balance1 = await token1 . balanceOf ( payee1 ) ;
459
460
const beforeFeeAddress_token1 = await token1 . balanceOf ( feeAddress ) ;
460
461
461
- const amount = 20 ;
462
- const feeAmount = 10 ;
462
+ const amount = 200 ;
463
+ const feeAmount = 100 ;
463
464
const nbTxs = 10 ;
464
465
465
466
const tx = await batch . connect ( spender3 ) . batchERC20Payments (
@@ -489,7 +490,7 @@ describe('contract: batchNoConversionPayments: ERC20', () => {
489
490
expect ( afterERC20Balance1 ) . to . be . equal ( beforeERC20Balance1 . add ( amount * nbTxs ) ) ;
490
491
const afterFeeAddress_token1 = await token1 . balanceOf ( feeAddress ) ;
491
492
expect ( afterFeeAddress_token1 ) . to . be . equal (
492
- beforeFeeAddress_token1 . add ( feeAmount * nbTxs + ( amount * nbTxs ) / 10 ) ,
493
+ beforeFeeAddress_token1 . add ( feeAmount * nbTxs + ( amount * nbTxs ) / 100 ) ,
493
494
) ;
494
495
} ) ;
495
496
0 commit comments