vkteams_bot/api/chats/
members_delete.rs1use crate::api::types::*;
4bot_api_method! {
5 method = "chats/members/delete",
6 request = RequestChatsMembersDelete {
7 required {
8 chat_id: ChatId,
9 user_id: UserId,
10 members: Vec<Sn>,
11 },
12 optional {}
13 },
14 response = ResponseChatsMembersDelete {},
15}
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20 use crate::api::types::{ChatId, Sn, UserId};
21 use serde_json::json;
22
23 #[test]
24 fn test_request_chats_members_delete_serialize() {
25 let req = RequestChatsMembersDelete {
26 chat_id: ChatId::from("c1"),
27 user_id: UserId("u1".to_string()),
28 members: vec![Sn {
29 sn: "s1".to_string(),
30 user_id: UserId("u2".to_string()),
31 }],
32 };
33 let val = serde_json::to_value(&req).unwrap();
34 assert_eq!(val["chatId"], "c1");
35 assert_eq!(val["userId"], "u1");
36 assert_eq!(val["members"][0]["sn"], "s1");
37 assert_eq!(val["members"][0]["userId"], "u2");
38 }
39
40 #[test]
41 fn test_request_chats_members_delete_deserialize() {
42 let val =
43 json!({"chatId": "c2", "userId": "u3", "members": [{"sn": "s2", "userId": "u4"}]});
44 let req: RequestChatsMembersDelete = serde_json::from_value(val).unwrap();
45 assert_eq!(req.chat_id.0, "c2");
46 assert_eq!(req.user_id.0, "u3");
47 assert_eq!(req.members[0].sn, "s2");
48 assert_eq!(req.members[0].user_id.0, "u4");
49 }
50
51 #[test]
52 fn test_request_chats_members_delete_empty_members() {
53 let val = json!({"chatId": "c3", "userId": "u5", "members": []});
54 let req: RequestChatsMembersDelete = serde_json::from_value(val).unwrap();
55 assert!(req.members.is_empty());
56 }
57
58 #[test]
59 fn test_request_chats_members_delete_missing_members() {
60 let val = json!({"chatId": "c4", "userId": "u6"});
61 let req = serde_json::from_value::<RequestChatsMembersDelete>(val);
62 assert!(req.is_err());
63 }
64
65 #[test]
66 fn test_request_chats_members_delete_invalid_member() {
67 let val = json!({"chatId": "c5", "userId": "u7", "members": [{"foo": "bar"}]});
68 let req = serde_json::from_value::<RequestChatsMembersDelete>(val);
69 assert!(req.is_err());
70 }
71
72 #[test]
73 fn test_response_chats_members_delete_serialize() {
74 let resp = ResponseChatsMembersDelete {};
75 let val = serde_json::to_value(&resp).unwrap();
76 assert_eq!(val.as_object().unwrap().len(), 0);
77 }
78
79 #[test]
80 fn test_response_chats_members_delete_deserialize() {
81 let val = json!({});
82 let resp: ResponseChatsMembersDelete = serde_json::from_value(val).unwrap();
83 let _ = resp;
84 }
85}