v0.1.0-pre.010
This commit is contained in:
42
kb-lib/tests/external_materializer_api.rs
Normal file
42
kb-lib/tests/external_materializer_api.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user