1
1
use drink:: {
2
- assert_err, assert_last_contract_event, assert_ok, call ,
2
+ assert_err, assert_last_contract_event, assert_ok, call_with_address ,
3
3
devnet:: {
4
4
account_id_from_slice,
5
5
error:: { v0:: Error , Nfts , NftsError :: * } ,
@@ -11,6 +11,9 @@ use drink::{
11
11
} ;
12
12
use pop_api:: v0:: nonfungibles:: { events:: Transfer , CollectionId , ItemId } ;
13
13
14
+ #[ cfg( debug_assertions) ]
15
+ compile_error ! ( "Tests must be run using the release profile (--release)" ) ;
16
+
14
17
use super :: * ;
15
18
16
19
const UNIT : Balance = 10_000_000_000 ;
@@ -331,7 +334,7 @@ fn transfer_fails_with_invalid_item(mut session: Session) {
331
334
#[ drink:: test( sandbox = Pop ) ]
332
335
fn destroy_works ( mut session : Session ) {
333
336
// Deploys a new contract.
334
- let contract = Contract :: new ( & mut session, None , NO_SALT ) . unwrap ( ) ;
337
+ assert_ok ! ( Contract :: new( & mut session, None , NO_SALT ) ) ;
335
338
// Successfully destroys a collection.
336
339
session. set_gas_limit ( Weight :: MAX ) ;
337
340
let witness_string =
@@ -377,6 +380,7 @@ fn destroy_fails_with_bad_witness(mut session: Session) {
377
380
378
381
// A set of helper methods to test the contract deployment and calls.
379
382
383
+ #[ derive( Debug ) ]
380
384
struct Contract {
381
385
pub address : AccountId ,
382
386
}
@@ -403,20 +407,42 @@ impl Contract {
403
407
}
404
408
405
409
fn collection_id ( & self , session : & mut Session < Pop > ) -> CollectionId {
406
- call :: < Pop , CollectionId , Psp34Error > ( session, "collection_id" , vec ! [ ] , None ) . unwrap ( )
410
+ call_with_address :: < Pop , CollectionId , Psp34Error > (
411
+ session,
412
+ self . address . clone ( ) ,
413
+ "collection_id" ,
414
+ vec ! [ ] ,
415
+ None ,
416
+ )
417
+ . unwrap ( )
407
418
}
408
419
409
420
fn next_item_id ( & self , session : & mut Session < Pop > ) -> ItemId {
410
- call :: < Pop , ItemId , Psp34Error > ( session, "next_item_id" , vec ! [ ] , None ) . unwrap ( )
421
+ call_with_address :: < Pop , ItemId , Psp34Error > (
422
+ session,
423
+ self . address . clone ( ) ,
424
+ "next_item_id" ,
425
+ vec ! [ ] ,
426
+ None ,
427
+ )
428
+ . unwrap ( )
411
429
}
412
430
413
431
fn balance_of ( & self , session : & mut Session < Pop > , owner : AccountId ) -> u32 {
414
- call :: < Pop , u32 , Psp34Error > ( session, "balance_of" , vec ! [ owner. to_string( ) ] , None ) . unwrap ( )
432
+ call_with_address :: < Pop , u32 , Psp34Error > (
433
+ session,
434
+ self . address . clone ( ) ,
435
+ "balance_of" ,
436
+ vec ! [ owner. to_string( ) ] ,
437
+ None ,
438
+ )
439
+ . unwrap ( )
415
440
}
416
441
417
442
fn owner_of ( & self , session : & mut Session < Pop > , item : ItemId ) -> Option < AccountId > {
418
- call :: < Pop , Option < AccountId > , Psp34Error > (
443
+ call_with_address :: < Pop , Option < AccountId > , Psp34Error > (
419
444
session,
445
+ self . address . clone ( ) ,
420
446
"owner_of" ,
421
447
vec ! [ item. to_string( ) ] ,
422
448
None ,
@@ -425,20 +451,40 @@ impl Contract {
425
451
}
426
452
427
453
fn total_supply ( & self , session : & mut Session < Pop > ) -> u128 {
428
- call :: < Pop , u128 , Psp34Error > ( session, "total_supply" , vec ! [ ] , None ) . unwrap ( )
454
+ call_with_address :: < Pop , u128 , Psp34Error > (
455
+ session,
456
+ self . address . clone ( ) ,
457
+ "total_supply" ,
458
+ vec ! [ ] ,
459
+ None ,
460
+ )
461
+ . unwrap ( )
429
462
}
430
463
431
464
fn mint ( & self , session : & mut Session < Pop > , to : AccountId ) -> Result < ( ) > {
432
- call :: < Pop , ( ) , Psp34Error > ( session, "mint" , vec ! [ to. to_string( ) ] , None )
465
+ call_with_address :: < Pop , ( ) , Psp34Error > (
466
+ session,
467
+ self . address . clone ( ) ,
468
+ "mint" ,
469
+ vec ! [ to. to_string( ) ] ,
470
+ None ,
471
+ )
433
472
}
434
473
435
474
fn burn ( & self , session : & mut Session < Pop > , item : ItemId ) -> Result < ( ) > {
436
- call :: < Pop , ( ) , Psp34Error > ( session, "burn" , vec ! [ item. to_string( ) ] , None )
475
+ call_with_address :: < Pop , ( ) , Psp34Error > (
476
+ session,
477
+ self . address . clone ( ) ,
478
+ "burn" ,
479
+ vec ! [ item. to_string( ) ] ,
480
+ None ,
481
+ )
437
482
}
438
483
439
484
fn transfer ( & self , session : & mut Session < Pop > , to : AccountId , item : ItemId ) -> Result < ( ) > {
440
- call :: < Pop , ( ) , Psp34Error > (
485
+ call_with_address :: < Pop , ( ) , Psp34Error > (
441
486
session,
487
+ self . address . clone ( ) ,
442
488
"transfer" ,
443
489
vec ! [ to. to_string( ) , item. to_string( ) ] ,
444
490
None ,
@@ -447,6 +493,12 @@ impl Contract {
447
493
448
494
fn destroy ( & self , session : & mut Session < Pop > , witness : DestroyWitness ) -> Result < ( ) > {
449
495
let witness_string = format ! ( "{:?}" , witness) ;
450
- call :: < Pop , ( ) , Psp34Error > ( session, "destroy" , vec ! [ witness_string] , None )
496
+ call_with_address :: < Pop , ( ) , Psp34Error > (
497
+ session,
498
+ self . address . clone ( ) ,
499
+ "destroy" ,
500
+ vec ! [ witness_string] ,
501
+ None ,
502
+ )
451
503
}
452
504
}
0 commit comments