use trait_kit::prelude::*;
pub struct OxcacheBuildObserver;
impl BuildObserver for OxcacheBuildObserver {}
#[cfg(test)]
mod tests {
use super::*;
use std::sync::Arc;
use std::time::Duration;
#[test]
fn observer_callbacks_do_not_panic() {
let obs = OxcacheBuildObserver;
obs.on_module_start("test-module");
obs.on_module_built("test-module", Duration::from_millis(5));
let err = TraitKitError::MissingCapability { key: "test".into() };
obs.on_build_error("test-module", &err);
}
#[test]
fn observer_is_send_sync() {
fn assert_send_sync<T: Send + Sync>() {}
assert_send_sync::<OxcacheBuildObserver>();
}
#[tokio::test]
async fn observer_registers_with_async_kit() {
let mut kit = AsyncKit::new();
kit.set_config(crate::integrations::kit::OxcacheConfig::default());
kit.with_observer(Arc::new(OxcacheBuildObserver));
kit.register::<crate::integrations::kit::OxcacheModule>()
.expect("register OxcacheModule");
let _kit = kit.build().await.expect("AsyncKit::build");
}
}