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!(!persisted.is_live(), "Persisted variant is_live() must be false");
60 }
61
62 #[test]
64 fn delivery_mode_clone() {
65 let live = DeliveryMode::Live {
66 message_id: "abc".to_string(),
67 };
68 let cloned = live.clone();
69 assert_eq!(live.message_id(), cloned.message_id());
70
71 let persisted = DeliveryMode::Persisted {
72 message_id: "xyz".to_string(),
73 };
74 let cloned_p = persisted.clone();
75 assert_eq!(persisted.message_id(), cloned_p.message_id());
76 }
77
78 #[test]
80 fn delivery_mode_debug() {
81 let live = DeliveryMode::Live {
82 message_id: "dbg-live".to_string(),
83 };
84 let s = format!("{live:?}");
85 assert!(s.contains("Live"), "Debug output must mention variant");
86
87 let persisted = DeliveryMode::Persisted {
88 message_id: "dbg-persisted".to_string(),
89 };
90 let s2 = format!("{persisted:?}");
91 assert!(s2.contains("Persisted"), "Debug output must mention variant");
92 }
93}