1pub mod memory;
7pub mod redb;
8
9pub use memory::MemoryCacheRepository;
10pub use redb::RedbCacheRepository;
11
12#[cfg(test)]
13mod tests {
14 use std::sync::Arc;
15
16 use crate::cache::MemoryCacheRepository;
17 use crate::context::CamelContext;
18 use crate::registry::RegistryError;
19
20 #[tokio::test]
21 async fn memory_cache_registered_as_default() {
22 let ctx = CamelContext::builder()
23 .build()
24 .await
25 .expect("build context");
26 let repo = ctx.cache_repository("memory");
27 assert!(repo.is_some());
28 assert_eq!(repo.unwrap().name(), "memory");
29 }
30
31 #[tokio::test]
32 async fn custom_backend_registered_alongside_memory() {
33 let mut ctx = CamelContext::builder()
34 .build()
35 .await
36 .expect("build context");
37 let custom = Arc::new(MemoryCacheRepository::new("custom", 100));
38 ctx.register_cache_repository("custom", custom)
39 .expect("custom cache repository registration should succeed");
40 assert!(ctx.cache_repository("custom").is_some());
41 assert!(ctx.cache_repository("memory").is_some());
42 }
43
44 #[tokio::test]
45 async fn duplicate_registration_rejected() {
46 let mut ctx = CamelContext::builder()
47 .build()
48 .await
49 .expect("build context");
50 let dup = Arc::new(MemoryCacheRepository::new("memory-dup", 100));
51 let err = ctx.register_cache_repository("memory", dup).unwrap_err();
52 assert!(
53 matches!(&err, RegistryError::AlreadyRegistered(name) if name == "memory"),
54 "expected AlreadyRegistered('memory'), got {err:?}"
55 );
56 }
57}