Skip to content

Commit 8a62899

Browse files
authored
Merge pull request #103 from xch-dev/nft-metadata-update-test
NFT metadata update test
2 parents 740c57d + b2a904e commit 8a62899

File tree

1 file changed

+47
-0
lines changed
  • crates/chia-sdk-driver/src/primitives

1 file changed

+47
-0
lines changed

crates/chia-sdk-driver/src/primitives/nft.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,53 @@ mod tests {
469469
Ok(())
470470
}
471471

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+
472519
#[test]
473520
fn test_parse_nft() -> anyhow::Result<()> {
474521
let mut sim = Simulator::new();

0 commit comments

Comments
 (0)