vkteams_bot/api/events/
get.rs1#![allow(unused_parens)]
2use 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 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 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}