@@ -469,6 +469,53 @@ mod tests {
469
469
Ok ( ( ) )
470
470
}
471
471
472
+ #[ test]
473
+ fn test_nft_metadata_update ( ) -> anyhow:: Result < ( ) > {
474
+ let mut sim = Simulator :: new ( ) ;
475
+ let ctx = & mut SpendContext :: new ( ) ;
476
+
477
+ let ( sk, pk, puzzle_hash, coin) = sim. new_p2 ( 2 ) ?;
478
+ let p2 = StandardLayer :: new ( pk) ;
479
+
480
+ let ( create_did, did) = Launcher :: new ( coin. coin_id ( ) , 1 ) . create_simple_did ( ctx, & p2) ?;
481
+ p2. spend ( ctx, coin, create_did) ?;
482
+
483
+ let mint = NftMint :: new (
484
+ NftMetadata {
485
+ data_uris : vec ! [ "example.com" . to_string( ) ] ,
486
+ data_hash : Some ( Bytes32 :: default ( ) ) ,
487
+ ..Default :: default ( )
488
+ } ,
489
+ puzzle_hash,
490
+ 300 ,
491
+ Some ( DidOwner :: from_did_info ( & did. info ) ) ,
492
+ ) ;
493
+
494
+ let ( mint_nft, nft) = IntermediateLauncher :: new ( did. coin . coin_id ( ) , 0 , 1 )
495
+ . create ( ctx) ?
496
+ . mint_nft ( ctx, mint) ?;
497
+ let _did = did. update ( ctx, & p2, mint_nft) ?;
498
+
499
+ let metadata_update = MetadataUpdate :: NewDataUri ( "another.com" . to_string ( ) ) . spend ( ctx) ?;
500
+ let nft: Nft < NftMetadata > =
501
+ nft. transfer_with_metadata ( ctx, & p2, puzzle_hash, metadata_update, Conditions :: new ( ) ) ?;
502
+
503
+ assert_eq ! (
504
+ nft. info. metadata,
505
+ NftMetadata {
506
+ data_uris: vec![ "another.com" . to_string( ) , "example.com" . to_string( ) ] ,
507
+ data_hash: Some ( Bytes32 :: default ( ) ) ,
508
+ ..Default :: default ( )
509
+ }
510
+ ) ;
511
+
512
+ let _nft = nft. transfer ( ctx, & p2, puzzle_hash, Conditions :: new ( ) ) ?;
513
+
514
+ sim. spend_coins ( ctx. take ( ) , & [ sk] ) ?;
515
+
516
+ Ok ( ( ) )
517
+ }
518
+
472
519
#[ test]
473
520
fn test_parse_nft ( ) -> anyhow:: Result < ( ) > {
474
521
let mut sim = Simulator :: new ( ) ;
0 commit comments