twilight_model/gateway/presence/
activity_emoji.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4pub struct ActivityEmoji {
5 #[serde(skip_serializing_if = "Option::is_none")]
6 pub animated: Option<bool>,
7 pub name: String,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub id: Option<String>,
10}
11
12#[cfg(test)]
13mod tests {
14 use super::ActivityEmoji;
15 use serde_test::Token;
16
17 #[test]
18 fn activity_emoji() {
19 let value = ActivityEmoji {
20 animated: Some(false),
21 name: "a".to_owned(),
22 id: None,
23 };
24
25 serde_test::assert_tokens(
26 &value,
27 &[
28 Token::Struct {
29 name: "ActivityEmoji",
30 len: 2,
31 },
32 Token::Str("animated"),
33 Token::Some,
34 Token::Bool(false),
35 Token::Str("name"),
36 Token::Str("a"),
37 Token::StructEnd,
38 ],
39 );
40 }
41
42 #[test]
43 fn activity_emoji_complete() {
44 let value = ActivityEmoji {
45 animated: Some(false),
46 name: "a".to_owned(),
47 id: Some("123".to_owned()),
48 };
49
50 serde_test::assert_tokens(
51 &value,
52 &[
53 Token::Struct {
54 name: "ActivityEmoji",
55 len: 3,
56 },
57 Token::Str("animated"),
58 Token::Some,
59 Token::Bool(false),
60 Token::Str("name"),
61 Token::Str("a"),
62 Token::Str("id"),
63 Token::Some,
64 Token::Str("123"),
65 Token::StructEnd,
66 ],
67 );
68 }
69}