gitlab/api/projects/access_requests/
access_requests.rs1use derive_builder::Builder;
8
9use crate::api::common::NameOrId;
10use crate::api::endpoint_prelude::*;
11
12#[derive(Debug, Builder, Clone)]
14pub struct ProjectAccessRequests<'a> {
15 #[builder(setter(into))]
17 project: NameOrId<'a>,
18}
19
20impl<'a> ProjectAccessRequests<'a> {
21 pub fn builder() -> ProjectAccessRequestsBuilder<'a> {
23 ProjectAccessRequestsBuilder::default()
24 }
25}
26
27impl Endpoint for ProjectAccessRequests<'_> {
28 fn method(&self) -> Method {
29 Method::GET
30 }
31
32 fn endpoint(&self) -> Cow<'static, str> {
33 format!("projects/{}/access_requests", self.project).into()
34 }
35}
36
37impl Pageable for ProjectAccessRequests<'_> {}
38
39#[cfg(test)]
40mod tests {
41 use crate::api::projects::access_requests::{
42 ProjectAccessRequests, ProjectAccessRequestsBuilderError,
43 };
44 use crate::api::{self, Query};
45 use crate::test::client::{ExpectedUrl, SingleTestClient};
46
47 #[test]
48 fn project_is_needed() {
49 let err = ProjectAccessRequests::builder().build().unwrap_err();
50 crate::test::assert_missing_field!(err, ProjectAccessRequestsBuilderError, "project");
51 }
52
53 #[test]
54 fn project_is_sufficient() {
55 ProjectAccessRequests::builder().project(1).build().unwrap();
56 }
57
58 #[test]
59 fn endpoint() {
60 let endpoint = ExpectedUrl::builder()
61 .endpoint("projects/simple%2Fproject/access_requests")
62 .build()
63 .unwrap();
64 let client = SingleTestClient::new_raw(endpoint, "");
65
66 let endpoint = ProjectAccessRequests::builder()
67 .project("simple/project")
68 .build()
69 .unwrap();
70 api::ignore(endpoint).query(&client).unwrap();
71 }
72}