twilight_model/poll/
results.rs

1use super::answer_count::AnswerCount;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
5/// This contains the number of votes for each answer.
6pub struct PollResults {
7    /// The counts for each answer.
8    pub answer_counts: Vec<AnswerCount>,
9    /// Whether the votes have been precisely counted.
10    pub is_finalized: bool,
11}
12
13#[cfg(test)]
14mod tests {
15    use super::{AnswerCount, PollResults};
16    use serde_test::Token;
17
18    #[test]
19    fn poll_results() {
20        let value = PollResults {
21            answer_counts: vec![
22                AnswerCount {
23                    id: 1,
24                    count: 2,
25                    me_voted: true,
26                },
27                AnswerCount {
28                    id: 3,
29                    count: 4,
30                    me_voted: false,
31                },
32            ],
33            is_finalized: true,
34        };
35
36        serde_test::assert_tokens(
37            &value,
38            &[
39                Token::Struct {
40                    name: "PollResults",
41                    len: 2,
42                },
43                Token::Str("answer_counts"),
44                Token::Seq { len: Some(2) },
45                Token::Struct {
46                    name: "AnswerCount",
47                    len: 3,
48                },
49                Token::Str("id"),
50                Token::U8(1),
51                Token::Str("count"),
52                Token::U64(2),
53                Token::Str("me_voted"),
54                Token::Bool(true),
55                Token::StructEnd,
56                Token::Struct {
57                    name: "AnswerCount",
58                    len: 3,
59                },
60                Token::Str("id"),
61                Token::U8(3),
62                Token::Str("count"),
63                Token::U64(4),
64                Token::Str("me_voted"),
65                Token::Bool(false),
66                Token::StructEnd,
67                Token::SeqEnd,
68                Token::Str("is_finalized"),
69                Token::Bool(true),
70                Token::StructEnd,
71            ],
72        );
73    }
74}