misskey_api/endpoint/i/
user_group_invites.rs1use crate::model::{id::Id, user_group::UserGroupInvitation};
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Default, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10 #[serde(skip_serializing_if = "Option::is_none")]
12 #[builder(default, setter(strip_option))]
13 pub limit: Option<u8>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 #[builder(default, setter(strip_option))]
16 pub since_id: Option<Id<UserGroupInvitation>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 #[builder(default, setter(strip_option))]
19 pub until_id: Option<Id<UserGroupInvitation>>,
20}
21
22impl misskey_core::Request for Request {
23 type Response = Vec<UserGroupInvitation>;
24 const ENDPOINT: &'static str = "i/user-group-invites";
25}
26
27impl_pagination!(Request, UserGroupInvitation);
28
29#[cfg(test)]
30mod tests {
31 use super::Request;
32 use crate::test::{ClientExt, TestClient};
33
34 #[tokio::test]
35 async fn request() {
36 let client = TestClient::new();
37 client.test(Request::default()).await;
38 }
39
40 #[tokio::test]
41 async fn request_with_limit() {
42 let client = TestClient::new();
43 client
44 .test(Request {
45 limit: Some(100),
46 since_id: None,
47 until_id: None,
48 })
49 .await;
50 }
51
52 #[tokio::test]
53 async fn request_paginate() {
54 let client = TestClient::new();
55 let (new_user, new_user_client) = client.admin.create_user().await;
56 let group = client
57 .test(crate::endpoint::users::groups::create::Request {
58 name: "test".to_string(),
59 })
60 .await;
61 client
62 .test(crate::endpoint::users::groups::invite::Request {
63 group_id: group.id,
64 user_id: new_user.id,
65 })
66 .await;
67 let invitation = new_user_client
68 .test(Request {
69 limit: None,
70 since_id: None,
71 until_id: None,
72 })
73 .await
74 .pop()
75 .unwrap();
76
77 new_user_client
78 .test(Request {
79 limit: None,
80 since_id: Some(invitation.id.clone()),
81 until_id: Some(invitation.id.clone()),
82 })
83 .await;
84 }
85}