bsv_messagebox_client/
delivery.rs1#[derive(Debug, Clone)]
12pub enum DeliveryMode {
13 Live { message_id: String },
15 Persisted { message_id: String },
18}
19
20impl DeliveryMode {
21 pub fn message_id(&self) -> &str {
23 match self {
24 Self::Live { message_id } | Self::Persisted { message_id } => message_id,
25 }
26 }
27
28 pub fn is_live(&self) -> bool {
30 matches!(self, Self::Live { .. })
31 }
32}
33
34#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
44 fn delivery_mode_message_id_both_variants() {
45 let live = DeliveryMode::Live {
46 message_id: "live-msg-001".to_string(),
47 };
48 assert_eq!(live.message_id(), "live-msg-001", "Live variant message_id");
49 assert!(live.is_live(), "Live variant is_live() must be true");
50
51 let persisted = DeliveryMode::Persisted {
52 message_id: "http-msg-002".to_string(),
53 };
54 assert_eq!(
55 persisted.message_id(),
56 "http-msg-002",
57 "Persisted variant message_id"
58 );
59 assert!(
60 !persisted.is_live(),
61 "Persisted variant is_live() must be false"
62 );
63 }
64
65 #[test]
67 fn delivery_mode_clone() {
68 let live = DeliveryMode::Live {
69 message_id: "abc".to_string(),
70 };
71 let cloned = live.clone();
72 assert_eq!(live.message_id(), cloned.message_id());
73
74 let persisted = DeliveryMode::Persisted {
75 message_id: "xyz".to_string(),
76 };
77 let cloned_p = persisted.clone();
78 assert_eq!(persisted.message_id(), cloned_p.message_id());
79 }
80
81 #[test]
83 fn delivery_mode_debug() {
84 let live = DeliveryMode::Live {
85 message_id: "dbg-live".to_string(),
86 };
87 let s = format!("{live:?}");
88 assert!(s.contains("Live"), "Debug output must mention variant");
89
90 let persisted = DeliveryMode::Persisted {
91 message_id: "dbg-persisted".to_string(),
92 };
93 let s2 = format!("{persisted:?}");
94 assert!(
95 s2.contains("Persisted"),
96 "Debug output must mention variant"
97 );
98 }
99}