twilight_model/channel/message/sticker/
message.rs1use super::StickerFormatType;
2use crate::id::{marker::StickerMarker, Id};
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
9pub struct MessageSticker {
10 pub format_type: StickerFormatType,
12 pub id: Id<StickerMarker>,
14 pub name: String,
16}
17
18#[cfg(test)]
19mod tests {
20 use super::{MessageSticker, StickerFormatType};
21 use crate::id::Id;
22 use serde::{Deserialize, Serialize};
23 use serde_test::Token;
24 use static_assertions::{assert_fields, assert_impl_all};
25 use std::{fmt::Debug, hash::Hash};
26
27 assert_fields!(MessageSticker: format_type, id, name);
28
29 assert_impl_all!(
30 MessageSticker: Clone,
31 Debug,
32 Deserialize<'static>,
33 Eq,
34 Hash,
35 PartialEq,
36 Send,
37 Serialize,
38 Sync,
39 );
40
41 #[test]
42 fn full() {
43 let value = MessageSticker {
44 format_type: StickerFormatType::Lottie,
45 id: Id::new(1),
46 name: "sticker".into(),
47 };
48
49 serde_test::assert_tokens(
50 &value,
51 &[
52 Token::Struct {
53 name: "MessageSticker",
54 len: 3,
55 },
56 Token::Str("format_type"),
57 Token::U8(StickerFormatType::Lottie.into()),
58 Token::Str("id"),
59 Token::NewtypeStruct { name: "Id" },
60 Token::Str("1"),
61 Token::Str("name"),
62 Token::Str("sticker"),
63 Token::StructEnd,
64 ],
65 );
66 }
67}