twilight_model/oauth/team/
member.rs1use crate::{
2 id::{marker::OauthTeamMarker, Id},
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 public_flags: None,
45 system: None,
46 verified: None,
47 },
48 };
49
50 serde_test::assert_tokens(
51 &value,
52 &[
53 Token::Struct {
54 name: "TeamMember",
55 len: 4,
56 },
57 Token::Str("membership_state"),
58 Token::U8(2),
59 Token::Str("permissions"),
60 Token::Seq { len: Some(1) },
61 Token::Str("*"),
62 Token::SeqEnd,
63 Token::Str("team_id"),
64 Token::NewtypeStruct { name: "Id" },
65 Token::Str("1"),
66 Token::Str("user"),
67 Token::Struct {
68 name: "User",
69 len: 10,
70 },
71 Token::Str("accent_color"),
72 Token::None,
73 Token::Str("avatar"),
74 Token::None,
75 Token::Str("avatar_decoration"),
76 Token::None,
77 Token::Str("avatar_decoration_data"),
78 Token::None,
79 Token::Str("banner"),
80 Token::None,
81 Token::Str("bot"),
82 Token::Bool(false),
83 Token::Str("discriminator"),
84 Token::Str("0001"),
85 Token::Str("global_name"),
86 Token::Some,
87 Token::Str("test"),
88 Token::Str("id"),
89 Token::NewtypeStruct { name: "Id" },
90 Token::Str("2"),
91 Token::Str("username"),
92 Token::Str("test"),
93 Token::StructEnd,
94 Token::StructEnd,
95 ],
96 );
97 }
98}