// file: kb-lib/tests/external_materializer_api.rs // version: 1 //! Downstream-style compilation contract for externally implemented materializers. const ACCEPTED_FAMILIES: &[kb_lib::EventFamily] = &[kb_lib::EventFamily::Audit]; struct ExternalAuditMaterializer; impl kb_lib::EventMaterializer for ExternalAuditMaterializer { fn identity(&self) -> kb_lib::MaterializerIdentity { return kb_lib::MaterializerIdentity { name: "external_audit_materializer".to_string(), version: "1".to_string(), }; } fn accepted_families(&self) -> &'static [kb_lib::EventFamily] { return ACCEPTED_FAMILIES; } fn transaction_policy( &self, _family: kb_lib::EventFamily, ) -> kb_lib::MaterializationTransactionPolicy { return kb_lib::MaterializationTransactionPolicy::SuccessfulOrFailedAudit; } fn materialize( &self, _observation: &kb_lib::DecodedObservation, ) -> kb_lib::MaterializerExecutionResult { return kb_lib::MaterializerExecutionResult::ignored(); } } #[test] fn external_materializer_uses_only_the_public_kb_lib_contract() { let materializer: &dyn kb_lib::EventMaterializer = &ExternalAuditMaterializer; assert_eq!(materializer.identity().name, "external_audit_materializer"); assert_eq!(materializer.accepted_families(), ACCEPTED_FAMILIES); }