twilight_model/channel/
channel_mention.rs

1use crate::{
2    channel::ChannelType,
3    id::{
4        marker::{ChannelMarker, GuildMarker},
5        Id,
6    },
7};
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
11pub struct ChannelMention {
12    pub guild_id: Id<GuildMarker>,
13    pub id: Id<ChannelMarker>,
14    #[serde(rename = "type")]
15    pub kind: ChannelType,
16    pub name: String,
17}
18
19#[cfg(test)]
20mod tests {
21    use super::{ChannelMention, ChannelType};
22    use crate::id::Id;
23    use serde_test::Token;
24
25    #[test]
26    fn channel_mention() {
27        let value = ChannelMention {
28            guild_id: Id::new(1),
29            id: Id::new(2),
30            kind: ChannelType::GuildText,
31            name: "channel".to_owned(),
32        };
33
34        serde_test::assert_tokens(
35            &value,
36            &[
37                Token::Struct {
38                    name: "ChannelMention",
39                    len: 4,
40                },
41                Token::Str("guild_id"),
42                Token::NewtypeStruct { name: "Id" },
43                Token::Str("1"),
44                Token::Str("id"),
45                Token::NewtypeStruct { name: "Id" },
46                Token::Str("2"),
47                Token::Str("type"),
48                Token::U8(0),
49                Token::Str("name"),
50                Token::Str("channel"),
51                Token::StructEnd,
52            ],
53        );
54    }
55}