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