@@ -11,10 +11,10 @@ import {
11
11
Address
12
12
} from 'ton'
13
13
import { SmartContract } from 'ton-contract-executor'
14
- import { encodeRaffleStorage , buffer256ToDec , RaffleStorage , NFTItem } from './raffle.storage'
15
- import { getRandSigner } from './raffle.signers'
14
+ import { encodeRaffleStorage , buffer256ToDec , RaffleStorage } from './raffle.storage'
16
15
import { Queries } from './raffle.queries'
17
16
import { RaffleLocal } from './raffle.local'
17
+ import { randomAddress } from '../../utils/randomAddress'
18
18
19
19
function queryId ( ) : BN {
20
20
return new BN ( ~ ~ ( Date . now ( ) / 1000 ) )
@@ -37,54 +37,42 @@ const TVM_EXIT_CODES = {
37
37
38
38
describe ( 'nft raffle main test' , ( ) => {
39
39
40
- const COMMISSION_FOR_NFT = 0.5
41
- const COMMISSION_FOR_MP = 0.5
40
+ const NFT_TRANSFER_FEE = 0.5
41
+ const MARKETPLACE_FEE = 0.5
42
42
43
43
const LEFT_NFTS_COUNT = 3
44
44
const RIGHT_NFTS_COUNT = 3
45
45
46
- const LEFT_USER = getRandSigner ( )
47
- const RIGHT_USER = getRandSigner ( )
48
- const SUPER_USER = getRandSigner ( )
46
+ const LEFT_USER = randomAddress ( )
47
+ const RIGHT_USER = randomAddress ( )
48
+ const SUPER_USER = randomAddress ( )
49
49
50
- const LEFT_COMMISSION = toNano ( ( COMMISSION_FOR_NFT + COMMISSION_FOR_MP ) * LEFT_NFTS_COUNT )
51
- const RIGHT_COMMISSION = toNano ( ( COMMISSION_FOR_NFT + COMMISSION_FOR_MP ) * RIGHT_NFTS_COUNT )
52
- const COINS_FOR_NFT = toNano ( COMMISSION_FOR_NFT + COMMISSION_FOR_MP + 0.01 )
50
+ const LEFT_COMMISSION = toNano ( ( NFT_TRANSFER_FEE + MARKETPLACE_FEE ) * LEFT_NFTS_COUNT )
51
+ const RIGHT_COMMISSION = toNano ( ( NFT_TRANSFER_FEE + MARKETPLACE_FEE ) * RIGHT_NFTS_COUNT )
52
+ const COINS_FOR_NFT = toNano ( NFT_TRANSFER_FEE + MARKETPLACE_FEE + 0.01 )
53
53
54
- const NFTS : NFTItem [ ] = [ ]
54
+ const NFTS : { address : Address , owner : 'left' | 'right' } [ ] = [ ]
55
55
const EMPTY_BODY = new CommonMessageInfo (
56
56
{ body : new CellMessage ( new Builder ( ) . endCell ( ) ) }
57
57
)
58
58
for ( let i = 0 ; i < LEFT_NFTS_COUNT ; i += 1 ) {
59
- NFTS . push ( { addr : getRandSigner ( ) , received : 0 } )
59
+ NFTS . push ( { address : randomAddress ( ) , owner : 'left' } )
60
60
}
61
61
for ( let i = 0 ; i < RIGHT_NFTS_COUNT ; i += 1 ) {
62
- NFTS . push ( { addr : getRandSigner ( ) , received : 1 } )
62
+ NFTS . push ( { address : randomAddress ( ) , owner : 'right' } )
63
63
}
64
64
const data : RaffleStorage = {
65
- stateSlice :
66
- {
67
- state : STATES . Active ,
68
- rightNftsCount : RIGHT_NFTS_COUNT ,
69
- leftNftsCount : LEFT_NFTS_COUNT
70
- } ,
71
- addrSlice :
72
- {
73
- leftUser : LEFT_USER ,
74
- rightUser : RIGHT_USER ,
75
- superUser : SUPER_USER
76
- } ,
77
- commissionSlice :
78
- {
79
- leftCommission : LEFT_COMMISSION ,
80
- rightCommission : RIGHT_COMMISSION ,
81
- coinsForNft : toNano ( COMMISSION_FOR_NFT ) ,
82
- coinsForCommission : toNano ( COMMISSION_FOR_MP )
83
- } ,
84
- dictSlice :
85
- {
86
- nfts : NFTS ,
87
- }
65
+ state : STATES . Active ,
66
+ rightNftsCount : RIGHT_NFTS_COUNT ,
67
+ leftNftsCount : LEFT_NFTS_COUNT ,
68
+ leftUser : LEFT_USER ,
69
+ rightUser : RIGHT_USER ,
70
+ superUser : SUPER_USER ,
71
+ leftCommission : LEFT_COMMISSION ,
72
+ rightCommission : RIGHT_COMMISSION ,
73
+ nftTransferFee : toNano ( NFT_TRANSFER_FEE ) ,
74
+ marketplaceFee : toNano ( MARKETPLACE_FEE ) ,
75
+ nfts : NFTS ,
88
76
}
89
77
describe ( 'contract' , ( ) => {
90
78
async function simpleTransferNFT ( raffleLocal : RaffleLocal , nftAddr : Address , nftOwner : Address , amount : BN ) {
@@ -105,34 +93,34 @@ describe('nft raffle main test', () => {
105
93
for ( let i = 0 ; i < LEFT_NFTS_COUNT ; i += 1 ) {
106
94
const result = await simpleTransferNFT (
107
95
raffleLocal ,
108
- NFTS [ i ] . addr ,
96
+ NFTS [ i ] . address ,
109
97
LEFT_USER ,
110
98
COINS_FOR_NFT
111
99
)
112
100
const get = await raffleLocal . getRaffleState ( )
113
101
if ( get . nfts != null ) {
114
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ i ] . addr . hash ) ) ) . to . equals ( 2 )
102
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ i ] . address . hash ) ) ) . to . equals ( 'left received' )
115
103
}
116
104
expect ( result . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
117
105
expect ( get . leftNftsReceived ) . to . equals ( i + 1 )
118
106
}
119
107
for ( let i = LEFT_NFTS_COUNT ; i < RIGHT_NFTS_COUNT + LEFT_NFTS_COUNT - 1 ; i += 1 ) {
120
108
const result = await simpleTransferNFT (
121
109
raffleLocal ,
122
- NFTS [ i ] . addr ,
110
+ NFTS [ i ] . address ,
123
111
RIGHT_USER ,
124
112
COINS_FOR_NFT
125
113
)
126
114
const get = await raffleLocal . getRaffleState ( )
127
115
if ( get . nfts != null ) {
128
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ i ] . addr . hash ) ) ) . to . equals ( 3 )
116
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ i ] . address . hash ) ) ) . to . equals ( 'right received' )
129
117
}
130
118
expect ( result . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
131
119
expect ( get . rightNftsReceived ) . to . equals ( i - LEFT_NFTS_COUNT + 1 )
132
120
}
133
121
const lastTransaction = await simpleTransferNFT (
134
122
raffleLocal ,
135
- NFTS [ LEFT_NFTS_COUNT + RIGHT_NFTS_COUNT - 1 ] . addr ,
123
+ NFTS [ LEFT_NFTS_COUNT + RIGHT_NFTS_COUNT - 1 ] . address ,
136
124
RIGHT_USER ,
137
125
COINS_FOR_NFT
138
126
)
@@ -141,46 +129,46 @@ describe('nft raffle main test', () => {
141
129
142
130
it ( '1) simple NFT transfer' , async ( ) => {
143
131
const smc = await RaffleLocal . createFromConfig ( data )
144
- const result = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , LEFT_USER , COINS_FOR_NFT )
132
+ const result = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , LEFT_USER , COINS_FOR_NFT )
145
133
const get = await smc . getRaffleState ( )
146
134
if ( get . nfts != null ) {
147
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . addr . hash ) ) ) . to . equals ( 2 )
135
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . address . hash ) ) ) . to . equals ( 'left received' )
148
136
}
149
137
expect ( result . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
150
138
expect ( get . leftNftsReceived ) . to . equals ( 1 )
151
- expect ( get . leftCoinsGot . toNumber ( ) ) . to . equals ( toNano ( COMMISSION_FOR_MP + COMMISSION_FOR_NFT ) . toNumber ( ) )
139
+ expect ( get . leftCoinsGot . toNumber ( ) ) . to . equals ( toNano ( NFT_TRANSFER_FEE + MARKETPLACE_FEE ) . toNumber ( ) )
152
140
} )
153
141
154
142
it ( '2) NFT transfer, but wrong commission' , async ( ) => {
155
143
const smc = await RaffleLocal . createFromConfig ( data )
156
- const result = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , LEFT_USER , toNano ( 0.1 ) )
144
+ const result = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , LEFT_USER , toNano ( 0.1 ) )
157
145
const get = await smc . getRaffleState ( )
158
146
if ( get . nfts != null ) {
159
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . addr . hash ) ) ) . to . equals ( 0 )
147
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . address . hash ) ) ) . to . equals ( 'left not received' )
160
148
}
161
149
expect ( result . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
162
150
expect ( result . actionList [ 0 ] . type ) . to . equals ( 'send_msg' )
163
151
expect ( get . leftNftsReceived ) . to . equals ( 0 )
164
152
} )
165
153
it ( '3) NFT transfer, but wrong NFT address' , async ( ) => {
166
154
const smc = await RaffleLocal . createFromConfig ( data )
167
- const result = await simpleTransferNFT ( smc , getRandSigner ( ) , LEFT_USER , COINS_FOR_NFT )
155
+ const result = await simpleTransferNFT ( smc , randomAddress ( ) , LEFT_USER , COINS_FOR_NFT )
168
156
const get = await smc . getRaffleState ( )
169
157
expect ( result . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
170
158
expect ( get . leftNftsReceived ) . to . equals ( 0 )
171
159
expect ( get . leftCoinsGot . toNumber ( ) ) . to . equals ( 0 )
172
160
} )
173
161
it ( '4) Left and Right NFT transfer' , async ( ) => {
174
162
const smc = await RaffleLocal . createFromConfig ( data )
175
- const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , LEFT_USER , COINS_FOR_NFT )
163
+ const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , LEFT_USER , COINS_FOR_NFT )
176
164
expect ( result1 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
177
- const result2 = await simpleTransferNFT ( smc , NFTS [ 3 ] . addr , RIGHT_USER , COINS_FOR_NFT )
165
+ const result2 = await simpleTransferNFT ( smc , NFTS [ 3 ] . address , RIGHT_USER , COINS_FOR_NFT )
178
166
expect ( result2 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
179
167
180
168
const get = await smc . getRaffleState ( )
181
169
if ( get . nfts != null ) {
182
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . addr . hash ) ) ) . to . equals ( 2 )
183
- expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 3 ] . addr . hash ) ) ) . to . equals ( 3 )
170
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 0 ] . address . hash ) ) ) . to . equals ( 'left received' )
171
+ expect ( get . nfts . get ( buffer256ToDec ( NFTS [ 3 ] . address . hash ) ) ) . to . equals ( 'right received' )
184
172
}
185
173
} )
186
174
it ( '5) raffle cancel' , async ( ) => {
@@ -205,9 +193,9 @@ describe('nft raffle main test', () => {
205
193
} )
206
194
it ( '6) raffle cancel + return nft' , async ( ) => {
207
195
const smc = await RaffleLocal . createFromConfig ( data )
208
- const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , LEFT_USER , COINS_FOR_NFT )
196
+ const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , LEFT_USER , COINS_FOR_NFT )
209
197
expect ( result1 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
210
- const result2 = await simpleTransferNFT ( smc , NFTS [ 3 ] . addr , RIGHT_USER , COINS_FOR_NFT )
198
+ const result2 = await simpleTransferNFT ( smc , NFTS [ 3 ] . address , RIGHT_USER , COINS_FOR_NFT )
211
199
expect ( result2 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
212
200
const result = await smc . contract . sendInternalMessage ( new InternalMessage ( {
213
201
to : smc . address ,
@@ -229,13 +217,13 @@ describe('nft raffle main test', () => {
229
217
} )
230
218
it ( '7) raffle cancel with wrong addr' , async ( ) => {
231
219
const smc = await RaffleLocal . createFromConfig ( data )
232
- const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , LEFT_USER , COINS_FOR_NFT )
220
+ const result1 = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , LEFT_USER , COINS_FOR_NFT )
233
221
expect ( result1 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
234
- const result2 = await simpleTransferNFT ( smc , NFTS [ 0 ] . addr , RIGHT_USER , COINS_FOR_NFT )
222
+ const result2 = await simpleTransferNFT ( smc , NFTS [ 0 ] . address , RIGHT_USER , COINS_FOR_NFT )
235
223
expect ( result2 . exit_code ) . to . equals ( TVM_EXIT_CODES . OK )
236
224
const result = await smc . contract . sendInternalMessage ( new InternalMessage ( {
237
225
to : smc . address ,
238
- from : getRandSigner ( ) ,
226
+ from : randomAddress ( ) ,
239
227
value : toNano ( 0.1 ) ,
240
228
bounce : true ,
241
229
body : new CommonMessageInfo ( { body : new CellMessage ( Queries . cancel ( ) ) } )
@@ -259,7 +247,7 @@ describe('nft raffle main test', () => {
259
247
const smc = await RaffleLocal . createFromConfig ( data )
260
248
const result = await smc . contract . sendInternalMessage ( new InternalMessage ( {
261
249
to : smc . address ,
262
- from : getRandSigner ( ) ,
250
+ from : randomAddress ( ) ,
263
251
value : toNano ( 0.5 ) ,
264
252
bounce : true ,
265
253
body : new CommonMessageInfo ( { body : new CellMessage ( Queries . addCoins ( ) ) } )
@@ -291,7 +279,7 @@ describe('nft raffle main test', () => {
291
279
expect ( get . state ) . to . be . equals ( STATES . Canceled )
292
280
const result = await smc . contract . sendInternalMessage ( new InternalMessage ( {
293
281
to : smc . address ,
294
- from : getRandSigner ( ) ,
282
+ from : randomAddress ( ) ,
295
283
value : toNano ( 0.5 ) ,
296
284
bounce : true ,
297
285
body : new CommonMessageInfo ( { body : new CellMessage ( Queries . sendTrans ( ) ) } )
0 commit comments