vkteams_bot/api/events/
get.rs

1#![allow(unused_parens)]
2//! Get the events that have occurred since the last event id method `events/get`
3//! [More info](https://teams.vk.com/botapi/#/events/get_events_get)
4use crate::api::types::*;
5bot_api_method! {
6    method = "events/get",
7    request = RequestEventsGet {
8        required {
9            last_event_id: EventId,
10        },
11        optional {
12            poll_time: u64,
13        }
14    },
15    response = ResponseEventsGet {
16        events: Vec<EventMessage>,
17    },
18}
19
20#[cfg(test)]
21use crate::prelude::*;
22#[test]
23fn test_chats_events_get_deserialization() {
24    let j = std::fs::read_to_string("tests/responds/chats_events_get.json").unwrap();
25    // Test deserialization of ResponseEventsGet
26    let _ = serde_json::from_str::<ResponseEventsGet>(j.as_str()).map_err(|e| {
27        eprintln!("Error deserializing response: {e}");
28        panic!("Failed to deserialize ResponseEventsGet");
29    });
30    // Test deserialization of ApiResponseWrapper<ResponseEventsGet>
31    let _ =
32        serde_json::from_str::<ApiResponseWrapper<ResponseEventsGet>>(j.as_str()).map_err(|e| {
33            eprintln!("Error deserializing response: {e}");
34            panic!("Failed to deserialize ApiResponseWrapper<ResponseEventsGet>");
35        });
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41    use serde_json::json;
42
43    #[test]
44    fn test_request_events_get_serialize() {
45        let req = RequestEventsGet {
46            last_event_id: 42,
47            poll_time: Some(10),
48        };
49        let val = serde_json::to_value(&req).unwrap();
50        assert_eq!(val["lastEventId"], 42);
51        assert_eq!(val["pollTime"], 10);
52    }
53
54    #[test]
55    fn test_request_events_get_deserialize() {
56        let val = json!({"lastEventId": 43, "pollTime": 15});
57        let req: RequestEventsGet = serde_json::from_value(val).unwrap();
58        assert_eq!(req.last_event_id, 43);
59        assert_eq!(req.poll_time, Some(15));
60    }
61
62    #[test]
63    fn test_request_events_get_missing_required() {
64        let val = json!({"pollTime": 10});
65        let req = serde_json::from_value::<RequestEventsGet>(val);
66        assert!(req.is_err());
67    }
68
69    #[test]
70    fn test_request_events_get_invalid_types() {
71        let val = json!({"lastEventId": "foo", "pollTime": "bar"});
72        let req = serde_json::from_value::<RequestEventsGet>(val);
73        assert!(req.is_err());
74    }
75
76    #[test]
77    fn test_response_events_get_serialize() {
78        let resp = ResponseEventsGet { events: vec![] };
79        let val = serde_json::to_value(&resp).unwrap();
80        assert!(val["events"].as_array().unwrap().is_empty());
81    }
82
83    #[test]
84    fn test_response_events_get_deserialize() {
85        let val = json!({"events": []});
86        let resp: ResponseEventsGet = serde_json::from_value(val).unwrap();
87        assert!(resp.events.is_empty());
88    }
89
90    #[test]
91    fn test_response_events_get_missing_events() {
92        let val = json!({});
93        let resp = serde_json::from_value::<ResponseEventsGet>(val);
94        assert!(resp.is_err());
95    }
96
97    #[test]
98    fn test_response_events_get_invalid_event() {
99        let val = json!({"events": [{"foo": "bar"}]});
100        let resp = serde_json::from_value::<ResponseEventsGet>(val);
101        assert!(resp.is_err());
102    }
103}