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