vkteams_bot/api/chats/
members_delete.rs

1//! Delete members from the chat method `chats/members/delete`
2//! [More info](https://teams.vk.com/botapi/#/chats/get_chats_members_delete)
3use 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}