@@ -62,6 +62,27 @@ fn add_collection_metadata<T: Config<I>, I: 'static>() -> (T::AccountId, Account
62
62
( caller, caller_lookup)
63
63
}
64
64
65
+ fn approve_collection < T : Config < I > , I : ' static > (
66
+ index : u32 ,
67
+ ) -> ( T :: AccountId , AccountIdLookupOf < T > ) {
68
+ let caller = Collection :: < T , I > :: get ( T :: Helper :: collection ( 0 ) ) . unwrap ( ) . owner ;
69
+ if caller != whitelisted_caller ( ) {
70
+ whitelist_account ! ( caller) ;
71
+ }
72
+ let caller_lookup = T :: Lookup :: unlookup ( caller. clone ( ) ) ;
73
+ let delegate: T :: AccountId = account ( "delegate" , 0 , SEED + index) ;
74
+ let delegate_lookup = T :: Lookup :: unlookup ( delegate. clone ( ) ) ;
75
+ let deadline = BlockNumberFor :: < T > :: max_value ( ) ;
76
+ assert_ok ! ( Nfts :: <T , I >:: approve_transfer(
77
+ SystemOrigin :: Signed ( caller. clone( ) ) . into( ) ,
78
+ T :: Helper :: collection( 0 ) ,
79
+ None ,
80
+ delegate_lookup. clone( ) ,
81
+ Some ( deadline) ,
82
+ ) ) ;
83
+ ( caller, caller_lookup)
84
+ }
85
+
65
86
fn mint_item < T : Config < I > , I : ' static > (
66
87
index : u16 ,
67
88
) -> ( T :: ItemId , T :: AccountId , AccountIdLookupOf < T > ) {
@@ -248,6 +269,8 @@ benchmarks_instance_pallet! {
248
269
let m in 0 .. 1_000 ;
249
270
let c in 0 .. 1_000 ;
250
271
let a in 0 .. 1_000 ;
272
+ let h in 0 .. 1_000 ;
273
+ let l in 0 .. 1_000 ;
251
274
252
275
let ( collection, caller, _) = create_collection:: <T , I >( ) ;
253
276
add_collection_metadata:: <T , I >( ) ;
@@ -265,6 +288,13 @@ benchmarks_instance_pallet! {
265
288
for i in 0 ..a {
266
289
add_collection_attribute:: <T , I >( i as u16 ) ;
267
290
}
291
+ for i in 0 ..h {
292
+ mint_item:: <T , I >( i as u16 ) ;
293
+ burn_item:: <T , I >( i as u16 ) ;
294
+ }
295
+ for i in 0 ..l {
296
+ approve_collection:: <T , I >( i) ;
297
+ }
268
298
let witness = Collection :: <T , I >:: get( collection) . unwrap( ) . destroy_witness( ) ;
269
299
} : _( SystemOrigin :: Signed ( caller) , collection, witness)
270
300
verify {
@@ -571,27 +601,45 @@ benchmarks_instance_pallet! {
571
601
}
572
602
573
603
approve_transfer {
604
+ let i in 0 ..1 ;
605
+
574
606
let ( collection, caller, _) = create_collection:: <T , I >( ) ;
575
607
let ( item, ..) = mint_item:: <T , I >( 0 ) ;
576
608
let delegate: T :: AccountId = account( "delegate" , 0 , SEED ) ;
577
609
let delegate_lookup = T :: Lookup :: unlookup( delegate. clone( ) ) ;
578
- let deadline = BlockNumberFor :: <T >:: max_value( ) ;
579
- } : _( SystemOrigin :: Signed ( caller. clone( ) ) , collection, item, delegate_lookup, Some ( deadline) )
610
+ let maybe_deadline = if i == 0 {
611
+ None
612
+ } else {
613
+ Some ( BlockNumberFor :: <T >:: max_value( ) )
614
+ } ;
615
+ let maybe_item = if i == 0 {
616
+ None
617
+ } else {
618
+ Some ( item)
619
+ } ;
620
+ } : _( SystemOrigin :: Signed ( caller. clone( ) ) , collection, maybe_item, delegate_lookup, maybe_deadline)
580
621
verify {
581
- assert_last_event:: <T , I >( Event :: TransferApproved { collection, item, owner: caller, delegate, deadline: Some ( deadline ) } . into( ) ) ;
622
+ assert_last_event:: <T , I >( Event :: TransferApproved { collection, item: maybe_item , owner: caller, delegate, deadline: maybe_deadline } . into( ) ) ;
582
623
}
583
624
584
625
cancel_approval {
626
+ let i in 0 ..1 ;
627
+
585
628
let ( collection, caller, _) = create_collection:: <T , I >( ) ;
586
629
let ( item, ..) = mint_item:: <T , I >( 0 ) ;
587
630
let delegate: T :: AccountId = account( "delegate" , 0 , SEED ) ;
588
631
let delegate_lookup = T :: Lookup :: unlookup( delegate. clone( ) ) ;
589
632
let origin = SystemOrigin :: Signed ( caller. clone( ) ) . into( ) ;
590
633
let deadline = BlockNumberFor :: <T >:: max_value( ) ;
591
- Nfts :: <T , I >:: approve_transfer( origin, collection, item, delegate_lookup. clone( ) , Some ( deadline) ) ?;
592
- } : _( SystemOrigin :: Signed ( caller. clone( ) ) , collection, item, delegate_lookup)
634
+ let maybe_item = if i == 0 {
635
+ None
636
+ } else {
637
+ Some ( item)
638
+ } ;
639
+ Nfts :: <T , I >:: approve_transfer( origin, collection, maybe_item, delegate_lookup. clone( ) , Some ( deadline) ) ?;
640
+ } : _( SystemOrigin :: Signed ( caller. clone( ) ) , collection, maybe_item, delegate_lookup)
593
641
verify {
594
- assert_last_event:: <T , I >( Event :: ApprovalCancelled { collection, item, owner: caller, delegate } . into( ) ) ;
642
+ assert_last_event:: <T , I >( Event :: ApprovalCancelled { collection, item: maybe_item , owner: caller, delegate } . into( ) ) ;
595
643
}
596
644
597
645
clear_all_transfer_approvals {
@@ -601,7 +649,7 @@ benchmarks_instance_pallet! {
601
649
let delegate_lookup = T :: Lookup :: unlookup( delegate. clone( ) ) ;
602
650
let origin = SystemOrigin :: Signed ( caller. clone( ) ) . into( ) ;
603
651
let deadline = BlockNumberFor :: <T >:: max_value( ) ;
604
- Nfts :: <T , I >:: approve_transfer( origin, collection, item, delegate_lookup. clone( ) , Some ( deadline) ) ?;
652
+ Nfts :: <T , I >:: approve_transfer( origin, collection, Some ( item) , delegate_lookup. clone( ) , Some ( deadline) ) ?;
605
653
} : _( SystemOrigin :: Signed ( caller. clone( ) ) , collection, item)
606
654
verify {
607
655
assert_last_event:: <T , I >( Event :: AllApprovalsCancelled { collection, item, owner: caller} . into( ) ) ;
0 commit comments