@@ -36,9 +36,11 @@ const defaultConfig: SwapData = {
36
36
supervisorAddress : SUPERVISOR ,
37
37
commissionAddress : COMMISSION ,
38
38
leftCommission : toNano ( "0.1" ) ,
39
- leftCommissionGot : toNano ( "0" ) ,
39
+ leftAmount : toNano ( "0" ) ,
40
+ leftCoinsGot : toNano ( "0" ) ,
40
41
rightCommission : toNano ( "0.05" ) ,
41
- rightCommissionGot : toNano ( "0" ) ,
42
+ rightAmount : toNano ( "0" ) ,
43
+ rightCoinsGot : toNano ( "0" ) ,
42
44
}
43
45
44
46
describe ( 'swap smc' , ( ) => {
@@ -140,6 +142,66 @@ describe('swap smc', () => {
140
142
expect ( data . state ) . toEqual ( SwapState . Active )
141
143
} )
142
144
145
+ it ( 'should accept nft + partial amount + full commission' , async ( ) => {
146
+ let cfg = Object . create ( defaultConfig ) ;
147
+ cfg . leftNft = [ { addr :NFT1 , sent : false } ]
148
+ cfg . leftCommission = toNano ( "0.5" )
149
+ cfg . leftAmount = toNano ( "1.0" )
150
+ cfg . rightNft = [ { addr :NFT2 , sent : false } ]
151
+
152
+ let c = await SwapLocal . createFromConfig ( cfg )
153
+
154
+ let res = await c . contract . sendInternalMessage ( new InternalMessage ( {
155
+ to : c . address ,
156
+ from : NFT1 ,
157
+ value : toNano ( "1.5999" ) ,
158
+ bounce : false ,
159
+ body : new CommonMessageInfo ( {
160
+ body : new CellMessage ( Queries . nftOwnerAssigned ( {
161
+ prevOwner : LEFT ,
162
+ } ) )
163
+ } )
164
+ } ) )
165
+
166
+ expect ( res . exit_code ) . toEqual ( 0 )
167
+
168
+ let data = await c . getTradeState ( )
169
+ expect ( data . leftGot . toNumber ( ) ) . toEqual ( toNano ( "1.4999" ) . toNumber ( ) )
170
+ expect ( data . left_ok ) . toEqual ( false )
171
+ expect ( data . right_ok ) . toEqual ( false )
172
+ expect ( data . state ) . toEqual ( SwapState . Active )
173
+ } )
174
+
175
+ it ( 'should accept nft + full amount + full commission' , async ( ) => {
176
+ let cfg = Object . create ( defaultConfig ) ;
177
+ cfg . leftNft = [ { addr :NFT1 , sent : false } ]
178
+ cfg . leftCommission = toNano ( "0.5" )
179
+ cfg . leftAmount = toNano ( "1.0" )
180
+ cfg . rightNft = [ { addr :NFT2 , sent : false } ]
181
+
182
+ let c = await SwapLocal . createFromConfig ( cfg )
183
+
184
+ let res = await c . contract . sendInternalMessage ( new InternalMessage ( {
185
+ to : c . address ,
186
+ from : NFT1 ,
187
+ value : toNano ( "1.6" ) ,
188
+ bounce : false ,
189
+ body : new CommonMessageInfo ( {
190
+ body : new CellMessage ( Queries . nftOwnerAssigned ( {
191
+ prevOwner : LEFT ,
192
+ } ) )
193
+ } )
194
+ } ) )
195
+
196
+ expect ( res . exit_code ) . toEqual ( 0 )
197
+
198
+ let data = await c . getTradeState ( )
199
+ expect ( data . leftGot . toNumber ( ) ) . toEqual ( toNano ( "1.5" ) . toNumber ( ) )
200
+ expect ( data . left_ok ) . toEqual ( true )
201
+ expect ( data . right_ok ) . toEqual ( false )
202
+ expect ( data . state ) . toEqual ( SwapState . Active )
203
+ } )
204
+
143
205
it ( 'should return unexpected nft' , async ( ) => {
144
206
let cfg = Object . create ( defaultConfig ) ;
145
207
cfg . leftNft = [ { addr :NFT1 , sent : false } ]
@@ -243,9 +305,9 @@ describe('swap smc', () => {
243
305
let cfg = Object . create ( defaultConfig ) ;
244
306
cfg . leftNft = [ { addr :NFT1 , sent : true } ]
245
307
cfg . leftCommission = toNano ( "1.0" )
246
- cfg . leftCommissionGot = toNano ( "0.8" )
308
+ cfg . leftCoinsGot = toNano ( "0.8" )
247
309
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
248
- cfg . rightCommissionGot = cfg . rightCommission
310
+ cfg . rightCoinsGot = cfg . rightCommission
249
311
250
312
let c = await SwapLocal . createFromConfig ( cfg )
251
313
c . contract . setBalance ( toNano ( "10" ) )
@@ -275,21 +337,23 @@ describe('swap smc', () => {
275
337
expect ( data . state ) . toEqual ( SwapState . Active )
276
338
} )
277
339
278
- it ( 'should complete after nft+commission' , async ( ) => {
340
+ it ( 'should complete after nft+commission+amount ' , async ( ) => {
279
341
let cfg = Object . create ( defaultConfig ) ;
280
342
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
281
343
cfg . leftCommission = toNano ( "1.0" )
344
+ cfg . leftAmount = toNano ( "0.7" )
282
345
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
283
346
cfg . rightCommission = toNano ( "1.0" )
284
- cfg . rightCommissionGot = cfg . rightCommission
347
+ cfg . rightAmount = toNano ( "0.1" )
348
+ cfg . rightCoinsGot = toNano ( "1.1" )
285
349
286
350
let c = await SwapLocal . createFromConfig ( cfg )
287
351
c . contract . setBalance ( toNano ( "0.05" ) )
288
352
289
353
let res = await c . contract . sendInternalMessage ( new InternalMessage ( {
290
354
to : c . address ,
291
355
from : NFT1 ,
292
- value : toNano ( "1.15 " ) ,
356
+ value : toNano ( "1.85 " ) ,
293
357
bounce : false ,
294
358
body : new CommonMessageInfo ( {
295
359
body : new CellMessage ( Queries . nftOwnerAssigned ( {
@@ -302,14 +366,14 @@ describe('swap smc', () => {
302
366
303
367
checkActions ( res . actionList , [ {
304
368
to : LEFT ,
305
- amount : toNano ( "0.05 " ) ,
369
+ amount : toNano ( "0.15 " ) ,
306
370
body : Queries . transferComplete ( { } ) ,
307
- mode : 3 ,
371
+ mode : 1 ,
308
372
} , {
309
373
to : RIGHT ,
310
- amount : toNano ( "0" ) ,
374
+ amount : toNano ( "0.7 " ) ,
311
375
body : Queries . transferComplete ( { } ) ,
312
- mode : 3 ,
376
+ mode : 1 ,
313
377
} , {
314
378
to : NFT1 ,
315
379
amount : toNano ( "0.05" ) ,
@@ -345,10 +409,10 @@ describe('swap smc', () => {
345
409
let cfg = Object . create ( defaultConfig ) ;
346
410
cfg . leftNft = [ { addr :NFT1 , sent : true } , { addr :NFT3 , sent : true } ]
347
411
cfg . leftCommission = toNano ( "1.0" )
348
- cfg . leftCommissionGot = toNano ( "0.9" )
412
+ cfg . leftCoinsGot = toNano ( "0.9" )
349
413
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
350
414
cfg . rightCommission = toNano ( "1.0" )
351
- cfg . rightCommissionGot = cfg . rightCommission
415
+ cfg . rightCoinsGot = cfg . rightCommission
352
416
353
417
let c = await SwapLocal . createFromConfig ( cfg )
354
418
@@ -370,12 +434,12 @@ describe('swap smc', () => {
370
434
to : LEFT ,
371
435
amount : toNano ( "0" ) ,
372
436
body : Queries . transferComplete ( { } ) ,
373
- mode : 3 ,
437
+ mode : 1 ,
374
438
} , {
375
439
to : RIGHT ,
376
440
amount : toNano ( "0" ) ,
377
441
body : Queries . transferComplete ( { } ) ,
378
- mode : 3 ,
442
+ mode : 1 ,
379
443
} , {
380
444
to : NFT1 ,
381
445
amount : toNano ( "0.05" ) ,
@@ -411,10 +475,10 @@ describe('swap smc', () => {
411
475
let cfg = Object . create ( defaultConfig ) ;
412
476
cfg . leftNft = [ { addr :NFT1 , sent : true } , { addr :NFT3 , sent : true } ]
413
477
cfg . leftCommission = toNano ( "1.0" )
414
- cfg . leftCommissionGot = toNano ( "0.9" )
478
+ cfg . leftCoinsGot = toNano ( "0.9" )
415
479
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
416
480
cfg . rightCommission = toNano ( "1.0" )
417
- cfg . rightCommissionGot = cfg . rightCommission
481
+ cfg . rightCoinsGot = cfg . rightCommission
418
482
419
483
let c = await SwapLocal . createFromConfig ( cfg )
420
484
@@ -437,10 +501,10 @@ describe('swap smc', () => {
437
501
let cfg = Object . create ( defaultConfig ) ;
438
502
cfg . leftNft = [ { addr :NFT1 , sent : true } , { addr :NFT3 , sent : true } ]
439
503
cfg . leftCommission = toNano ( "1.0" )
440
- cfg . leftCommissionGot = toNano ( "0.9" )
504
+ cfg . leftCoinsGot = toNano ( "0.9" )
441
505
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
442
506
cfg . rightCommission = toNano ( "1.0" )
443
- cfg . rightCommissionGot = cfg . rightCommission
507
+ cfg . rightCoinsGot = cfg . rightCommission
444
508
445
509
let c = await SwapLocal . createFromConfig ( cfg )
446
510
@@ -464,10 +528,10 @@ describe('swap smc', () => {
464
528
cfg . state = SwapState . Completed
465
529
cfg . leftNft = [ { addr :NFT1 , sent : true } , { addr :NFT3 , sent : true } ]
466
530
cfg . leftCommission = toNano ( "1.0" )
467
- cfg . leftCommissionGot = toNano ( "0.9" )
531
+ cfg . leftCoinsGot = toNano ( "0.9" )
468
532
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
469
533
cfg . rightCommission = toNano ( "1.0" )
470
- cfg . rightCommissionGot = cfg . rightCommission
534
+ cfg . rightCoinsGot = cfg . rightCommission
471
535
472
536
let c = await SwapLocal . createFromConfig ( cfg )
473
537
@@ -491,10 +555,10 @@ describe('swap smc', () => {
491
555
cfg . state = SwapState . Completed
492
556
cfg . leftNft = [ { addr :NFT1 , sent : true } , { addr :NFT3 , sent : true } ]
493
557
cfg . leftCommission = toNano ( "1.0" )
494
- cfg . leftCommissionGot = cfg . leftCommission
558
+ cfg . leftCoinsGot = cfg . leftCommission
495
559
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
496
560
cfg . rightCommission = toNano ( "1.0" )
497
- cfg . rightCommissionGot = cfg . rightCommission
561
+ cfg . rightCoinsGot = cfg . rightCommission
498
562
499
563
let c = await SwapLocal . createFromConfig ( cfg )
500
564
@@ -516,10 +580,10 @@ describe('swap smc', () => {
516
580
cfg . state = SwapState . Active
517
581
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
518
582
cfg . leftCommission = toNano ( "1.0" )
519
- cfg . leftCommissionGot = cfg . leftCommission
583
+ cfg . leftCoinsGot = cfg . leftCommission
520
584
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
521
585
cfg . rightCommission = toNano ( "1.0" )
522
- cfg . rightCommissionGot = cfg . rightCommission
586
+ cfg . rightCoinsGot = cfg . rightCommission
523
587
524
588
let c = await SwapLocal . createFromConfig ( cfg )
525
589
@@ -541,10 +605,10 @@ describe('swap smc', () => {
541
605
cfg . state = SwapState . Active
542
606
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
543
607
cfg . leftCommission = toNano ( "1.0" )
544
- cfg . leftCommissionGot = toNano ( "0.9" )
608
+ cfg . leftCoinsGot = toNano ( "0.9" )
545
609
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
546
610
cfg . rightCommission = toNano ( "1.0" )
547
- cfg . rightCommissionGot = cfg . rightCommission
611
+ cfg . rightCoinsGot = cfg . rightCommission
548
612
549
613
let c = await SwapLocal . createFromConfig ( cfg )
550
614
@@ -601,10 +665,10 @@ describe('swap smc', () => {
601
665
cfg . state = SwapState . Completed
602
666
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
603
667
cfg . leftCommission = toNano ( "1.0" )
604
- cfg . leftCommissionGot = toNano ( "0.9" )
668
+ cfg . leftCoinsGot = toNano ( "0.9" )
605
669
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
606
670
cfg . rightCommission = toNano ( "1.0" )
607
- cfg . rightCommissionGot = cfg . rightCommission
671
+ cfg . rightCoinsGot = cfg . rightCommission
608
672
609
673
let c = await SwapLocal . createFromConfig ( cfg )
610
674
@@ -641,10 +705,10 @@ describe('swap smc', () => {
641
705
cfg . state = SwapState . Completed
642
706
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
643
707
cfg . leftCommission = toNano ( "1.0" )
644
- cfg . leftCommissionGot = toNano ( "0.9" )
708
+ cfg . leftCoinsGot = toNano ( "0.9" )
645
709
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
646
710
cfg . rightCommission = toNano ( "1.0" )
647
- cfg . rightCommissionGot = cfg . rightCommission
711
+ cfg . rightCoinsGot = cfg . rightCommission
648
712
649
713
let c = await SwapLocal . createFromConfig ( cfg )
650
714
@@ -669,10 +733,10 @@ describe('swap smc', () => {
669
733
cfg . state = SwapState . Active
670
734
cfg . leftNft = [ { addr :NFT1 , sent : false } , { addr :NFT3 , sent : true } ]
671
735
cfg . leftCommission = toNano ( "1.0" )
672
- cfg . leftCommissionGot = toNano ( "0.9" )
736
+ cfg . leftCoinsGot = toNano ( "0.9" )
673
737
cfg . rightNft = [ { addr :NFT2 , sent : true } ]
674
738
cfg . rightCommission = toNano ( "1.0" )
675
- cfg . rightCommissionGot = cfg . rightCommission
739
+ cfg . rightCoinsGot = cfg . rightCommission
676
740
677
741
let c = await SwapLocal . createFromConfig ( cfg )
678
742
0 commit comments