twilight_model/poll/
answer.rs

1use super::media::PollMedia;
2use serde::{Deserialize, Serialize};
3
4/// A poll answer.
5#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
6pub struct PollAnswer {
7    /// The ID of the answer.
8    ///
9    /// This is unique within the poll. And increases
10    /// sequentially with each answer. Currently, only
11    /// 1-10 answers are allowed.
12    pub answer_id: u8,
13    /// The data of the answer.
14    pub poll_media: PollMedia,
15}
16
17#[cfg(test)]
18mod tests {
19    use super::{PollAnswer, PollMedia};
20    use crate::{id::Id, poll::media::PartialPollMediaEmoji};
21    use serde_test::Token;
22
23    #[test]
24    fn poll_answer() {
25        let value = PollAnswer {
26            answer_id: 1,
27            poll_media: PollMedia {
28                emoji: Some(PartialPollMediaEmoji {
29                    animated: true,
30                    id: Some(Id::new(1)),
31                    name: Some("a".to_owned()),
32                }),
33                text: Some("b".to_owned()),
34            },
35        };
36
37        serde_test::assert_tokens(
38            &value,
39            &[
40                Token::Struct {
41                    name: "PollAnswer",
42                    len: 2,
43                },
44                Token::Str("answer_id"),
45                Token::U8(1),
46                Token::Str("poll_media"),
47                Token::Struct {
48                    name: "PollMedia",
49                    len: 2,
50                },
51                Token::Str("emoji"),
52                Token::Some,
53                Token::Struct {
54                    name: "PartialPollMediaEmoji",
55                    len: 3,
56                },
57                Token::Str("animated"),
58                Token::Bool(true),
59                Token::Str("id"),
60                Token::Some,
61                Token::NewtypeStruct { name: "Id" },
62                Token::Str("1"),
63                Token::Str("name"),
64                Token::Some,
65                Token::Str("a"),
66                Token::StructEnd,
67                Token::Str("text"),
68                Token::Some,
69                Token::Str("b"),
70                Token::StructEnd,
71                Token::StructEnd,
72            ],
73        );
74    }
75}