0.5.1-pre.002
This commit is contained in:
98
ks-lib/tests/external_materializer_api.rs
Normal file
98
ks-lib/tests/external_materializer_api.rs
Normal file
@@ -0,0 +1,98 @@
|
||||
// file: ks-lib/tests/external_materializer_api.rs
|
||||
// version: 9
|
||||
|
||||
//! Downstream-style compilation contract for externally implemented materializers.
|
||||
|
||||
const ACCEPTED_FAMILIES: &[ks_lib::MdEventFamily] = &[ks_lib::MdEventFamily::Audit];
|
||||
|
||||
struct ExternalAuditMaterializer;
|
||||
|
||||
fn assert_event_materializer<Materializer: ks_lib::MtApiEventMaterializer>() {}
|
||||
|
||||
fn assert_legacy_materializer<Materializer: ks_lib::MtMaterializer>() {}
|
||||
|
||||
impl ks_lib::MtApiEventMaterializer for ExternalAuditMaterializer {
|
||||
fn identity(&self) -> ks_lib::MtApiMaterializerIdentity {
|
||||
return ks_lib::MtApiMaterializerIdentity {
|
||||
name: "materializer.external.audit".to_string(),
|
||||
version: "1".to_string(),
|
||||
};
|
||||
}
|
||||
|
||||
fn accepted_families(&self) -> &'static [ks_lib::MdEventFamily] {
|
||||
return ACCEPTED_FAMILIES;
|
||||
}
|
||||
|
||||
fn transaction_policy(
|
||||
&self,
|
||||
_family: ks_lib::MdEventFamily,
|
||||
) -> ks_lib::MtApiMaterializationTransactionPolicy {
|
||||
return ks_lib::MtApiMaterializationTransactionPolicy::SuccessfulOrFailedAudit;
|
||||
}
|
||||
|
||||
fn materialize(
|
||||
&self,
|
||||
_observation: &ks_lib::DcApiDecodedObservation,
|
||||
) -> ks_lib::MtApiMaterializerExecutionResult {
|
||||
return ks_lib::MtApiMaterializerExecutionResult::ignored();
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn external_materializer_uses_only_the_public_ks_lib_contract() {
|
||||
let materializer: &dyn ks_lib::MtApiEventMaterializer = &ExternalAuditMaterializer;
|
||||
assert_eq!(materializer.identity().name, "materializer.external.audit");
|
||||
assert_eq!(materializer.accepted_families(), ACCEPTED_FAMILIES);
|
||||
assert_event_materializer::<ks_lib::MtAdminMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtBridgeMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtComplianceAuditMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtFeesMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtGovernanceMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtLendingMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtLifecycleMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtMetadataMetaplexTokenMetadataMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtMetadataSolanaProgramMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtMetadataToken2022Materializer>();
|
||||
assert_event_materializer::<ks_lib::MtLiquidityMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtNftMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtOracleMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtOrderbookMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtPerpetualsMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtPoolStateMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtRewardsMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtRiskMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtRoutingMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtStakingMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtTokenAccountsMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtTokenMetadataRiskMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtTradesMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtTransactionAnnotationMaterializer>();
|
||||
assert_event_materializer::<ks_lib::MtVaultMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtBridgeMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtGovernanceMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtLendingMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtLiquidityMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtMetadataMetaplexTokenMetadataMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtMetadataSolanaProgramMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtMetadataToken2022Materializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtNftMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtOracleMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtOrderbookMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtPerpetualsMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtPoolStateMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtRewardsMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtRoutingMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtTokenMetadataRiskMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtTradesMaterializer>();
|
||||
assert_legacy_materializer::<ks_lib::MtVaultMaterializer>();
|
||||
let _ = ks_lib::materializer_admin_materialize_elgamal_registry_state_snapshot;
|
||||
let _ = ks_lib::materializer_metadata_materialize_metaplex_account_snapshot;
|
||||
let _ = ks_lib::materializer_metadata_materialize_metaplex_metadata_snapshot;
|
||||
let _ = ks_lib::materializer_metadata_materialize_solana_program_metadata_account_snapshot;
|
||||
let _ = ks_lib::materializer_metadata_materialize_solana_program_metadata_buffer_snapshot;
|
||||
let _ = ks_lib::materializer_metadata_materialize_solana_program_metadata_metadata_snapshot;
|
||||
let _ = ks_lib::materializer_admin_materialize_token_2022_state_snapshots;
|
||||
let _ = ks_lib::materializer_fees_materialize_token_2022_state_snapshots;
|
||||
let _ = ks_lib::materializer_metadata_materialize_token_2022_snapshot;
|
||||
let _ = ks_lib::materializer_token_materialize_token_2022_state_snapshot;
|
||||
}
|
||||
Reference in New Issue
Block a user