Skip to main content

ares_agent/
external_context.rs

1use cordis::Service;
2
3/// Request-scoped Eruka (or other external) context injected via Cordis intercept.
4pub struct ExternalContext(pub String);
5
6impl Service for ExternalContext {}
7
8#[cfg(test)]
9mod tests {
10    use super::ExternalContext;
11    use cordis::Context;
12
13    #[test]
14    fn eruka_context_defaults_to_none() {
15        let ctx = Context::new_root();
16        assert!(ctx.get::<ExternalContext>().is_none());
17    }
18
19    #[test]
20    fn eruka_context_set_and_get_round_trip() {
21        let ctx = Context::new_root();
22        ctx.provide(ExternalContext("binding-42".into()));
23        assert_eq!(
24            ctx.get::<ExternalContext>().as_deref().map(|e| e.0.as_str()),
25            Some("binding-42")
26        );
27    }
28
29    #[test]
30    fn eruka_context_intercept_replaces_previous_value() {
31        let ctx = Context::new_root().with_intercept(ExternalContext("first".into()));
32        let ctx = ctx.with_intercept(ExternalContext("second".into()));
33        assert_eq!(
34            ctx.get::<ExternalContext>().as_deref().map(|e| e.0.as_str()),
35            Some("second")
36        );
37    }
38}