twilight_model/gateway/payload/incoming/
message_poll_vote_remove.rs

1use crate::id::{
2    marker::{ChannelMarker, GuildMarker, MessageMarker, UserMarker},
3    Id,
4};
5use serde::{Deserialize, Serialize};
6
7/// Sent when a user removes a vote on a poll. If the poll allows multiple selection,
8/// one event will be sent per answer.
9#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
10pub struct MessagePollVoteRemove {
11    /// ID of the answer.
12    pub answer_id: u8,
13    /// ID of the channel.
14    pub channel_id: Id<ChannelMarker>,
15    /// ID of the guild.
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub guild_id: Option<Id<GuildMarker>>,
18    /// ID of the message.
19    pub message_id: Id<MessageMarker>,
20    /// ID of the user.
21    pub user_id: Id<UserMarker>,
22}
23
24#[cfg(test)]
25mod tests {
26    use super::{Id, MessagePollVoteRemove};
27    use serde_test::Token;
28
29    #[test]
30    fn test_message_poll_vote_remove() {
31        let value = MessagePollVoteRemove {
32            answer_id: 1,
33            channel_id: Id::new(2),
34            guild_id: Some(Id::new(3)),
35            message_id: Id::new(4),
36            user_id: Id::new(5),
37        };
38
39        serde_test::assert_tokens(
40            &value,
41            &[
42                Token::Struct {
43                    name: "MessagePollVoteRemove",
44                    len: 5,
45                },
46                Token::Str("answer_id"),
47                Token::U8(1),
48                Token::Str("channel_id"),
49                Token::NewtypeStruct { name: "Id" },
50                Token::Str("2"),
51                Token::Str("guild_id"),
52                Token::Some,
53                Token::NewtypeStruct { name: "Id" },
54                Token::Str("3"),
55                Token::Str("message_id"),
56                Token::NewtypeStruct { name: "Id" },
57                Token::Str("4"),
58                Token::Str("user_id"),
59                Token::NewtypeStruct { name: "Id" },
60                Token::Str("5"),
61                Token::StructEnd,
62            ],
63        );
64    }
65}