zulip_api/message/update_message_flags/
request.rs1use serde::{Deserialize, Serialize};
2
3use crate::{field_access, impl_default, impl_display, Flag, Operation};
4
5#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
9pub struct Request {
10 messages: Vec<u64>,
11 op: Operation,
12 flag: Flag,
13}
14
15impl Request {
16 pub const fn new() -> Self {
18 Self {
19 messages: Vec::new(),
20 op: Operation::new(),
21 flag: Flag::new(),
22 }
23 }
24}
25
26field_access! {
27 Request {
28 messages: cow { [u64] },
30 }
31}
32
33field_access! {
34 Request {
35 op: Operation,
37 flag: Flag,
39 }
40}
41
42impl_default!(Request);
43impl_display!(Request);
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn test_request() {
51 let messages = [1u64];
52 let op = Operation::new();
53 let flag = Flag::new();
54
55 let request = Request::new()
56 .with_messages(messages.as_ref())
57 .with_op(op)
58 .with_flag(flag);
59 let request_json = request.to_string();
60
61 assert_eq!(serde_json::to_string(&request).unwrap(), request_json);
62 assert_eq!(
63 serde_json::from_str::<Request>(&request_json).unwrap(),
64 request
65 );
66
67 assert_eq!(request.messages(), messages.as_ref());
68 assert_eq!(request.op(), op);
69 assert_eq!(request.flag(), flag);
70 }
71}