rocketmq_remoting/protocol/header/
delete_topic_request_header.rs1use cheetah_string::CheetahString;
18use rocketmq_macros::RequestHeaderCodecV2;
19use serde::Deserialize;
20use serde::Serialize;
21
22use crate::rpc::topic_request_header::TopicRequestHeader;
23
24#[derive(Serialize, Deserialize, Debug, RequestHeaderCodecV2)]
25pub struct DeleteTopicRequestHeader {
26 #[required]
27 #[serde(rename = "topic")]
28 pub topic: CheetahString,
29
30 #[serde(flatten)]
31 pub topic_request_header: Option<TopicRequestHeader>,
32}
33
34#[cfg(test)]
35mod tests {
36 use std::collections::HashMap;
37
38 use super::*;
39 use crate::protocol::command_custom_header::CommandCustomHeader;
40 use crate::protocol::command_custom_header::FromMap;
41
42 #[test]
43 fn delete_topic_request_header_to_map() {
44 let header = DeleteTopicRequestHeader {
45 topic: CheetahString::from("test_topic"),
46 topic_request_header: None,
47 };
48
49 let map = header.to_map().unwrap();
50 assert_eq!(
51 map.get(&CheetahString::from_static_str(
52 DeleteTopicRequestHeader::TOPIC
53 ))
54 .unwrap(),
55 &CheetahString::from("test_topic")
56 );
57 }
58
59 #[test]
60 fn delete_topic_request_header_to_map_with_topic_request_header() {
61 let topic_request_header = TopicRequestHeader {
62 rpc_request_header: None,
64 lo: None,
65 };
66 let header = DeleteTopicRequestHeader {
67 topic: CheetahString::from("test_topic"),
68 topic_request_header: Some(topic_request_header),
69 };
70
71 let map = header.to_map().unwrap();
72 assert_eq!(
73 map.get(&CheetahString::from_static_str(
74 DeleteTopicRequestHeader::TOPIC
75 ))
76 .unwrap(),
77 &CheetahString::from("test_topic")
78 );
79 }
81
82 #[test]
83 fn delete_topic_request_header_from_map() {
84 let mut map = HashMap::new();
85 map.insert(
86 CheetahString::from_static_str(DeleteTopicRequestHeader::TOPIC),
87 CheetahString::from("test_topic"),
88 );
89
90 let header = <DeleteTopicRequestHeader as FromMap>::from(&map).unwrap();
91 assert_eq!(header.topic, CheetahString::from("test_topic"));
92 assert!(header.topic_request_header.is_some());
93 }
94
95 #[test]
96 fn delete_topic_request_header_from_map_with_topic_request_header() {
97 let mut map = HashMap::new();
98 map.insert(
99 CheetahString::from_static_str(DeleteTopicRequestHeader::TOPIC),
100 CheetahString::from("test_topic"),
101 );
102 let header = <DeleteTopicRequestHeader as FromMap>::from(&map).unwrap();
105 assert_eq!(header.topic, CheetahString::from("test_topic"));
106 assert!(header.topic_request_header.is_some());
107 }
109}