twilight_model/gateway/presence/
activity_emoji.rs

1use 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}