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