twilight_model/poll/
answer.rs1use super::media::PollMedia;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
6pub struct PollAnswer {
7 pub answer_id: u8,
13 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}