use std::sync::Arc;
use trait_kit::prelude::AsyncScope;
use crate::integrations::infra::Database;
#[must_use]
pub fn create_inklog_scope() -> AsyncScope {
AsyncScope::new()
}
pub fn populate_inklog_scope(scope: &AsyncScope, db: Arc<dyn Database + Send + Sync>) {
scope.insert::<super::InklogModule>(db);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn create_scope_succeeds() {
let scope = create_inklog_scope();
assert!(!scope.contains::<super::super::InklogModule>());
}
#[test]
fn scopes_are_independent() {
let _scope1 = create_inklog_scope();
let _scope2 = create_inklog_scope();
}
#[cfg(feature = "sqlite")]
#[tokio::test]
async fn scope_insert_require_roundtrip() {
use dbnexus::foundation::config::DbConfig;
use oxcache::integrations::kit::{OxcacheConfig, OxcacheModule};
use trait_kit::prelude::*;
use super::super::InklogModule;
let mut kit = AsyncKit::new();
kit.set_config(OxcacheConfig::default());
kit.set_config(DbConfig {
url: "sqlite::memory:".to_string(),
pool_config: dbnexus::foundation::config::PoolConfig {
max_connections: 2,
min_connections: 1,
..Default::default()
},
..Default::default()
});
kit.register::<OxcacheModule>()
.expect("register OxcacheModule");
kit.register::<dbnexus::DbNexusModule>()
.expect("register DbNexusModule");
kit.register::<InklogModule>()
.expect("register InklogModule");
let built = kit.build().await.expect("build");
let db = built.require::<InklogModule>().expect("require from kit");
let scope = create_inklog_scope();
populate_inklog_scope(&scope, db);
assert!(scope.contains::<InklogModule>());
let retrieved = scope.require::<InklogModule>().expect("require from scope");
assert!(retrieved.is_healthy().await);
}
}