twilight_model/oauth/team/
member.rs1use crate::{
2 id::{Id, marker::OauthTeamMarker},
3 oauth::team::TeamMembershipState,
4 user::User,
5};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
9pub struct TeamMember {
10 pub membership_state: TeamMembershipState,
11 pub permissions: Vec<String>,
12 pub team_id: Id<OauthTeamMarker>,
13 pub user: User,
14}
15
16#[cfg(test)]
17mod tests {
18 use super::{TeamMember, TeamMembershipState, User};
19 use crate::id::Id;
20 use serde_test::Token;
21
22 #[test]
23 fn team_member() {
24 let value = TeamMember {
25 membership_state: TeamMembershipState::Accepted,
26 permissions: vec!["*".to_owned()],
27 team_id: Id::new(1),
28 user: User {
29 accent_color: None,
30 avatar: None,
31 avatar_decoration: None,
32 avatar_decoration_data: None,
33 banner: None,
34 bot: false,
35 discriminator: 1,
36 email: None,
37 flags: None,
38 global_name: Some("test".to_owned()),
39 id: Id::new(2),
40 locale: None,
41 mfa_enabled: None,
42 name: "test".to_owned(),
43 premium_type: None,
44 primary_guild: None,
45 public_flags: None,
46 system: None,
47 verified: None,
48 },
49 };
50
51 serde_test::assert_tokens(
52 &value,
53 &[
54 Token::Struct {
55 name: "TeamMember",
56 len: 4,
57 },
58 Token::Str("membership_state"),
59 Token::U8(2),
60 Token::Str("permissions"),
61 Token::Seq { len: Some(1) },
62 Token::Str("*"),
63 Token::SeqEnd,
64 Token::Str("team_id"),
65 Token::NewtypeStruct { name: "Id" },
66 Token::Str("1"),
67 Token::Str("user"),
68 Token::Struct {
69 name: "User",
70 len: 10,
71 },
72 Token::Str("accent_color"),
73 Token::None,
74 Token::Str("avatar"),
75 Token::None,
76 Token::Str("avatar_decoration"),
77 Token::None,
78 Token::Str("avatar_decoration_data"),
79 Token::None,
80 Token::Str("banner"),
81 Token::None,
82 Token::Str("bot"),
83 Token::Bool(false),
84 Token::Str("discriminator"),
85 Token::Str("0001"),
86 Token::Str("global_name"),
87 Token::Some,
88 Token::Str("test"),
89 Token::Str("id"),
90 Token::NewtypeStruct { name: "Id" },
91 Token::Str("2"),
92 Token::Str("username"),
93 Token::Str("test"),
94 Token::StructEnd,
95 Token::StructEnd,
96 ],
97 );
98 }
99}