v0.4.7-pre.014
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: kb-pipeline-demo-scenarios/src/solana_metaplex_token_metadata_scenarios.rs
|
||||
// version: 4
|
||||
// version: 5
|
||||
|
||||
//! Coherent Metaplex Token Metadata scenario journeys for tests and Devnet campaigns.
|
||||
|
||||
@@ -224,23 +224,85 @@ pub fn metaplex_token_metadata_synthetic_scenarios()
|
||||
/// Returns the ordered Metaplex journeys intended for opt-in Devnet simulation.
|
||||
pub fn metaplex_token_metadata_devnet_scenarios()
|
||||
-> std::vec::Vec<crate::MetaplexTokenMetadataScenario> {
|
||||
let mut scenario = scenario(
|
||||
"metaplex_nft_create_update_devnet",
|
||||
"NFT classique : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::Nft,
|
||||
crate::MetaplexTokenMetadataFixtureKind::ClassicNftMint,
|
||||
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(),
|
||||
],
|
||||
false,
|
||||
false,
|
||||
&["metadata_state", "edition_state"],
|
||||
);
|
||||
scenario.mode = crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation;
|
||||
return vec![scenario];
|
||||
let definitions = [
|
||||
(
|
||||
"metaplex_nft_create_update_devnet",
|
||||
"NFT classique : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::Nft,
|
||||
crate::MetaplexTokenMetadataFixtureKind::ClassicNftMint,
|
||||
false,
|
||||
false,
|
||||
&["metadata_state", "edition_state"][..],
|
||||
),
|
||||
(
|
||||
"metaplex_sft_create_update_devnet",
|
||||
"SFT : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::Sft,
|
||||
crate::MetaplexTokenMetadataFixtureKind::SemiFungibleMint,
|
||||
false,
|
||||
false,
|
||||
&["metadata_state"][..],
|
||||
),
|
||||
(
|
||||
"metaplex_fungible_create_update_devnet",
|
||||
"Fungible : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::Fungible,
|
||||
crate::MetaplexTokenMetadataFixtureKind::FungibleMint,
|
||||
false,
|
||||
false,
|
||||
&["metadata_state"][..],
|
||||
),
|
||||
(
|
||||
"metaplex_collection_create_update_devnet",
|
||||
"Collection parent : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::Collection,
|
||||
crate::MetaplexTokenMetadataFixtureKind::CollectionParentAndMember,
|
||||
true,
|
||||
false,
|
||||
&["metadata_state", "edition_state"][..],
|
||||
),
|
||||
(
|
||||
"metaplex_pnft_create_update_devnet",
|
||||
"pNFT sans rule set : création confirmée puis mise à jour",
|
||||
crate::MetaplexTokenMetadataAssetFamily::ProgrammableNft,
|
||||
crate::MetaplexTokenMetadataFixtureKind::ProgrammableNftTokenRecord,
|
||||
false,
|
||||
false,
|
||||
&["metadata_state", "edition_state"][..],
|
||||
),
|
||||
];
|
||||
return definitions
|
||||
.into_iter()
|
||||
.map(
|
||||
|(
|
||||
id,
|
||||
label,
|
||||
asset_family,
|
||||
fixture_kind,
|
||||
requires_collection,
|
||||
requires_programmable_rules,
|
||||
materialization_targets,
|
||||
)| {
|
||||
let mut value = scenario(
|
||||
id,
|
||||
label,
|
||||
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(),
|
||||
],
|
||||
requires_collection,
|
||||
requires_programmable_rules,
|
||||
materialization_targets,
|
||||
);
|
||||
value.mode = crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation;
|
||||
return value;
|
||||
},
|
||||
)
|
||||
.collect();
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -279,18 +341,23 @@ mod tests {
|
||||
#[test]
|
||||
fn devnet_inventory_exposes_only_fully_preparable_journeys() {
|
||||
let devnet = crate::metaplex_token_metadata_devnet_scenarios();
|
||||
assert_eq!(devnet.len(), 1);
|
||||
let scenario = &devnet[0];
|
||||
assert_eq!(scenario.asset_family, crate::MetaplexTokenMetadataAssetFamily::Nft);
|
||||
assert_eq!(scenario.operation_codes.len(), 2);
|
||||
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_eq!(scenario.mode, crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation);
|
||||
assert_eq!(devnet.len(), 5);
|
||||
let families = devnet
|
||||
.iter()
|
||||
.map(|scenario| return scenario.asset_family)
|
||||
.collect::<std::collections::BTreeSet<_>>();
|
||||
assert_eq!(families.len(), 5);
|
||||
for scenario in devnet {
|
||||
assert_eq!(scenario.operation_codes.len(), 2);
|
||||
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_eq!(scenario.mode, crate::MetaplexTokenMetadataScenarioMode::NetworkSimulation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user