twilight_model/gateway/payload/incoming/
message_poll_vote_remove.rs1use crate::id::{
2 marker::{ChannelMarker, GuildMarker, MessageMarker, UserMarker},
3 Id,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
10pub struct MessagePollVoteRemove {
11 pub answer_id: u8,
13 pub channel_id: Id<ChannelMarker>,
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub guild_id: Option<Id<GuildMarker>>,
18 pub message_id: Id<MessageMarker>,
20 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}