gewe_core/group/
manage.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct CreateChatroomRequest<'a> {
6    #[serde(rename = "appId")]
7    pub app_id: &'a str,
8    pub wxids: Vec<&'a str>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
12#[serde(rename_all = "camelCase")]
13pub struct CreateChatroomResponse {
14    #[serde(default)]
15    pub head_img_base64: Option<String>,
16    pub chatroom_id: String,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct DisbandChatroomRequest<'a> {
22    #[serde(rename = "appId")]
23    pub app_id: &'a str,
24    #[serde(rename = "chatroomId")]
25    pub chatroom_id: &'a str,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct QuitChatroomRequest<'a> {
31    #[serde(rename = "appId")]
32    pub app_id: &'a str,
33    #[serde(rename = "chatroomId")]
34    pub chatroom_id: &'a str,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct ModifyChatroomNameRequest<'a> {
40    #[serde(rename = "appId")]
41    pub app_id: &'a str,
42    #[serde(rename = "chatroomName")]
43    pub chatroom_name: &'a str,
44    #[serde(rename = "chatroomId")]
45    pub chatroom_id: &'a str,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct ModifyChatroomRemarkRequest<'a> {
51    #[serde(rename = "appId")]
52    pub app_id: &'a str,
53    #[serde(rename = "chatroomRemark")]
54    pub chatroom_remark: &'a str,
55    #[serde(rename = "chatroomId")]
56    pub chatroom_id: &'a str,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(rename_all = "camelCase")]
61pub struct ModifyChatroomNickNameForSelfRequest<'a> {
62    #[serde(rename = "appId")]
63    pub app_id: &'a str,
64    #[serde(rename = "chatroomId")]
65    pub chatroom_id: &'a str,
66    #[serde(rename = "nickName")]
67    pub nick_name: &'a str,
68}
69
70pub type SimpleGroupResponse = ();
71
72#[cfg(test)]
73mod tests {
74    use super::*;
75
76    #[test]
77    fn test_create_chatroom_response_default() {
78        let resp = CreateChatroomResponse::default();
79        assert_eq!(resp.chatroom_id, "");
80        assert_eq!(resp.head_img_base64, None);
81    }
82
83    #[test]
84    fn test_create_chatroom_response_deserialization() {
85        let json = r#"{
86            "chatroomId": "room123",
87            "headImgBase64": "base64_data"
88        }"#;
89        let resp: CreateChatroomResponse = serde_json::from_str(json).unwrap();
90        assert_eq!(resp.chatroom_id, "room123");
91        assert_eq!(resp.head_img_base64, Some("base64_data".to_string()));
92    }
93
94    #[test]
95    fn test_create_chatroom_request_serialization() {
96        let req = CreateChatroomRequest {
97            app_id: "test_app",
98            wxids: vec!["wxid1", "wxid2", "wxid3"],
99        };
100        let json = serde_json::to_string(&req).unwrap();
101        assert!(json.contains("test_app"));
102        assert!(json.contains("wxid1"));
103        assert!(json.contains("wxid2"));
104        assert!(json.contains("wxid3"));
105    }
106
107    #[test]
108    fn test_disband_chatroom_request_serialization() {
109        let req = DisbandChatroomRequest {
110            app_id: "test_app",
111            chatroom_id: "room123",
112        };
113        let json = serde_json::to_string(&req).unwrap();
114        assert!(json.contains("test_app"));
115        assert!(json.contains("room123"));
116    }
117
118    #[test]
119    fn test_quit_chatroom_request_serialization() {
120        let req = QuitChatroomRequest {
121            app_id: "test_app",
122            chatroom_id: "room123",
123        };
124        let json = serde_json::to_string(&req).unwrap();
125        assert!(json.contains("test_app"));
126        assert!(json.contains("room123"));
127    }
128
129    #[test]
130    fn test_modify_chatroom_name_request_serialization() {
131        let req = ModifyChatroomNameRequest {
132            app_id: "test_app",
133            chatroom_name: "New Room Name",
134            chatroom_id: "room123",
135        };
136        let json = serde_json::to_string(&req).unwrap();
137        assert!(json.contains("test_app"));
138        assert!(json.contains("New Room Name"));
139        assert!(json.contains("room123"));
140    }
141
142    #[test]
143    fn test_modify_chatroom_remark_request_serialization() {
144        let req = ModifyChatroomRemarkRequest {
145            app_id: "test_app",
146            chatroom_remark: "Important Group",
147            chatroom_id: "room123",
148        };
149        let json = serde_json::to_string(&req).unwrap();
150        assert!(json.contains("test_app"));
151        assert!(json.contains("Important Group"));
152        assert!(json.contains("room123"));
153    }
154
155    #[test]
156    fn test_modify_chatroom_nickname_for_self_request_serialization() {
157        let req = ModifyChatroomNickNameForSelfRequest {
158            app_id: "test_app",
159            chatroom_id: "room123",
160            nick_name: "My Nickname",
161        };
162        let json = serde_json::to_string(&req).unwrap();
163        assert!(json.contains("test_app"));
164        assert!(json.contains("room123"));
165        assert!(json.contains("My Nickname"));
166    }
167}