rocketmq_protocol/protocol/body/
set_message_request_mode_request_body.rs1use cheetah_string::CheetahString;
16use rocketmq_model::common::message::message_enum::MessageRequestMode;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct SetMessageRequestModeRequestBody {
23 pub topic: CheetahString,
24 pub consumer_group: CheetahString,
25 pub mode: MessageRequestMode,
26 pub pop_share_queue_num: i32,
31}
32
33impl Default for SetMessageRequestModeRequestBody {
34 fn default() -> Self {
35 SetMessageRequestModeRequestBody {
36 topic: CheetahString::new(),
37 consumer_group: CheetahString::new(),
38 mode: MessageRequestMode::Pull,
39 pop_share_queue_num: 0,
40 }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use serde_json;
47
48 use super::*;
49
50 #[test]
51 fn serialize_set_message_request_mode_request_body() {
52 let body = SetMessageRequestModeRequestBody {
53 topic: CheetahString::from("test_topic"),
54 consumer_group: CheetahString::from("test_group"),
55 mode: MessageRequestMode::Pop,
56 pop_share_queue_num: 5,
57 };
58 let serialized = serde_json::to_string(&body).unwrap();
59 assert!(serialized.contains("\"topic\":\"test_topic\""));
60 assert!(serialized.contains("\"consumerGroup\":\"test_group\""));
61 assert!(serialized.contains("\"mode\":\"POP\""));
62 assert!(serialized.contains("\"popShareQueueNum\":5"));
63 }
64
65 #[test]
66 fn default_set_message_request_mode_request_body() {
67 let default_body = SetMessageRequestModeRequestBody::default();
68 assert_eq!(default_body.topic, CheetahString::new());
69 assert_eq!(default_body.consumer_group, CheetahString::new());
70 assert_eq!(default_body.mode, MessageRequestMode::Pull);
71 assert_eq!(default_body.pop_share_queue_num, 0);
72 }
73
74 #[test]
75 fn deserialize_set_message_request_mode_request_body() {
76 let json = r#"
77 {
78 "topic": "test_topic",
79 "consumerGroup": "test_group",
80 "mode": "PULL",
81 "popShareQueueNum": 3
82 }"#;
83 let deserialized: SetMessageRequestModeRequestBody = serde_json::from_str(json).unwrap();
84 assert_eq!(deserialized.topic, CheetahString::from("test_topic"));
85 assert_eq!(deserialized.consumer_group, CheetahString::from("test_group"));
86 assert_eq!(deserialized.mode, MessageRequestMode::Pull);
87 assert_eq!(deserialized.pop_share_queue_num, 3);
88 }
89
90 #[test]
91 fn deserialize_set_message_request_mode_request_body_invalid_mode() {
92 let json = r#"{
93 "topic": "test_topic",
94 "consumerGroup": "test_group",
95 "mode": "INVALID",
96 "popShareQueueNum": 3
97 }"#;
98 let deserialized: Result<SetMessageRequestModeRequestBody, _> = serde_json::from_str(json);
99 assert!(deserialized.is_err());
100 }
101}