twilight_model/channel/
channel_mention.rs1use 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}