v0.4.7-pre.015

This commit is contained in:
2026-08-04 21:32:09 +02:00
parent b358b12f3b
commit 40d831f84d
7 changed files with 117 additions and 27 deletions

View File

@@ -1,5 +1,5 @@
// file: kb-pipeline-demo-scenarios/src/solana_metaplex_token_metadata_scenarios.rs
// version: 5
// version: 6
//! Coherent Metaplex Token Metadata scenario journeys for tests and Devnet campaigns.
@@ -47,6 +47,8 @@ pub enum MetaplexTokenMetadataFixtureState {
MetadataCreated,
/// Master edition exists.
MasterEditionCreated,
/// Metadata is immutable after a confirmed update-authority transition.
MetadataImmutable,
/// Collection member exists but is not verified.
CollectionMemberUnverified,
/// Collection member is verified.
@@ -226,8 +228,8 @@ pub fn metaplex_token_metadata_devnet_scenarios()
-> std::vec::Vec<crate::MetaplexTokenMetadataScenario> {
let definitions = [
(
"metaplex_nft_create_update_devnet",
"NFT classique : création confirmée puis mise à jour",
"metaplex_nft_lifecycle_devnet",
"NFT classique : création, mise à jour puis immutabilité",
crate::MetaplexTokenMetadataAssetFamily::Nft,
crate::MetaplexTokenMetadataFixtureKind::ClassicNftMint,
false,
@@ -289,11 +291,23 @@ pub fn metaplex_token_metadata_devnet_scenarios()
asset_family,
fixture_kind,
crate::MetaplexTokenMetadataFixtureState::MintPrepared,
crate::MetaplexTokenMetadataFixtureState::MetadataCreated,
vec![
kb_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION.to_string(),
kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION.to_string(),
],
if asset_family == crate::MetaplexTokenMetadataAssetFamily::Nft {
crate::MetaplexTokenMetadataFixtureState::MetadataImmutable
} else {
crate::MetaplexTokenMetadataFixtureState::MetadataCreated
},
if asset_family == crate::MetaplexTokenMetadataAssetFamily::Nft {
vec![
kb_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION.to_string(),
kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION.to_string(),
kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION.to_string(),
]
} else {
vec![
kb_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION.to_string(),
kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION.to_string(),
]
},
requires_collection,
requires_programmable_rules,
materialization_targets,
@@ -348,14 +362,20 @@ mod tests {
.collect::<std::collections::BTreeSet<_>>();
assert_eq!(families.len(), 5);
for scenario in devnet {
assert_eq!(scenario.operation_codes.len(), 2);
let expected_len =
if scenario.asset_family == crate::MetaplexTokenMetadataAssetFamily::Nft {
3
} else {
2
};
assert_eq!(scenario.operation_codes.len(), expected_len);
assert_eq!(
scenario.operation_codes[0],
kb_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION
);
assert_eq!(
scenario.operation_codes[1],
kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION
assert!(
scenario.operation_codes[1..].iter().all(|operation| return operation
== kb_lib::EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION)
);
assert_eq!(scenario.mode, crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation);
}