gitlab/api/projects/issues/
merge_requests_closing.rs1use derive_builder::Builder;
8
9use crate::api::common::NameOrId;
10use crate::api::endpoint_prelude::*;
11
12#[derive(Debug, Builder, Clone)]
14pub struct MergeRequestsClosing<'a> {
15 #[builder(setter(into))]
17 project: NameOrId<'a>,
18 issue: u64,
20}
21
22impl<'a> MergeRequestsClosing<'a> {
23 pub fn builder() -> MergeRequestsClosingBuilder<'a> {
25 MergeRequestsClosingBuilder::default()
26 }
27}
28
29impl Endpoint for MergeRequestsClosing<'_> {
30 fn method(&self) -> Method {
31 Method::GET
32 }
33
34 fn endpoint(&self) -> Cow<'static, str> {
35 format!("projects/{}/issues/{}/closed_by", self.project, self.issue).into()
36 }
37}
38
39impl Pageable for MergeRequestsClosing<'_> {}
40
41#[cfg(test)]
42mod tests {
43 use crate::api::projects::issues::{MergeRequestsClosing, MergeRequestsClosingBuilderError};
44 use crate::api::{self, Query};
45 use crate::test::client::{ExpectedUrl, SingleTestClient};
46
47 #[test]
48 fn project_and_issue_are_needed() {
49 let err = MergeRequestsClosing::builder().build().unwrap_err();
50 crate::test::assert_missing_field!(err, MergeRequestsClosingBuilderError, "project");
51 }
52
53 #[test]
54 fn project_is_needed() {
55 let err = MergeRequestsClosing::builder()
56 .issue(1)
57 .build()
58 .unwrap_err();
59 crate::test::assert_missing_field!(err, MergeRequestsClosingBuilderError, "project");
60 }
61
62 #[test]
63 fn issue_is_needed() {
64 let err = MergeRequestsClosing::builder()
65 .project(1)
66 .build()
67 .unwrap_err();
68 crate::test::assert_missing_field!(err, MergeRequestsClosingBuilderError, "issue");
69 }
70
71 #[test]
72 fn project_and_issue_are_sufficient() {
73 MergeRequestsClosing::builder()
74 .project(1)
75 .issue(1)
76 .build()
77 .unwrap();
78 }
79
80 #[test]
81 fn endpoint() {
82 let endpoint = ExpectedUrl::builder()
83 .endpoint("projects/simple%2Fproject/issues/1/closed_by")
84 .build()
85 .unwrap();
86 let client = SingleTestClient::new_raw(endpoint, "");
87
88 let endpoint = MergeRequestsClosing::builder()
89 .project("simple/project")
90 .issue(1)
91 .build()
92 .unwrap();
93 api::ignore(endpoint).query(&client).unwrap();
94 }
95}