Skip to main content

twilight_model/gateway/presence/
activity_assets.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4pub struct ActivityAssets {
5    #[serde(skip_serializing_if = "Option::is_none")]
6    pub large_image: Option<String>,
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub large_text: Option<String>,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub large_url: Option<String>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub small_image: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub small_text: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub small_url: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub invite_cover_image: Option<String>,
19}
20
21#[cfg(test)]
22mod tests {
23    use super::ActivityAssets;
24    use serde_test::Token;
25
26    #[test]
27    fn activity_secrets() {
28        let value = ActivityAssets {
29            large_image: Some("large image hash".to_owned()),
30            large_text: Some("large image text".to_owned()),
31            large_url: Some("large image url".to_owned()),
32            small_image: Some("small image hash".to_owned()),
33            small_text: Some("small text hash".to_owned()),
34            small_url: Some("small image url".to_owned()),
35            invite_cover_image: Some("invite cover hash".to_owned()),
36        };
37
38        serde_test::assert_tokens(
39            &value,
40            &[
41                Token::Struct {
42                    name: "ActivityAssets",
43                    len: 7,
44                },
45                Token::Str("large_image"),
46                Token::Some,
47                Token::Str("large image hash"),
48                Token::Str("large_text"),
49                Token::Some,
50                Token::Str("large image text"),
51                Token::Str("large_url"),
52                Token::Some,
53                Token::Str("large image url"),
54                Token::Str("small_image"),
55                Token::Some,
56                Token::Str("small image hash"),
57                Token::Str("small_text"),
58                Token::Some,
59                Token::Str("small text hash"),
60                Token::Str("small_url"),
61                Token::Some,
62                Token::Str("small image url"),
63                Token::Str("invite_cover_image"),
64                Token::Some,
65                Token::Str("invite cover hash"),
66                Token::StructEnd,
67            ],
68        );
69    }
70}