gitlab/api/projects/merge_requests/awards/
delete.rs1use derive_builder::Builder;
8
9use crate::api::common::NameOrId;
10use crate::api::endpoint_prelude::*;
11
12#[derive(Debug, Builder, Clone)]
14pub struct DeleteMergeRequestAward<'a> {
15 #[builder(setter(into))]
17 project: NameOrId<'a>,
18 merge_request: u64,
20 award: u64,
22}
23
24impl<'a> DeleteMergeRequestAward<'a> {
25 pub fn builder() -> DeleteMergeRequestAwardBuilder<'a> {
27 DeleteMergeRequestAwardBuilder::default()
28 }
29}
30
31impl Endpoint for DeleteMergeRequestAward<'_> {
32 fn method(&self) -> Method {
33 Method::DELETE
34 }
35
36 fn endpoint(&self) -> Cow<'static, str> {
37 format!(
38 "projects/{}/merge_requests/{}/award_emoji/{}",
39 self.project, self.merge_request, self.award,
40 )
41 .into()
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use http::Method;
48
49 use crate::api::projects::merge_requests::awards::{
50 DeleteMergeRequestAward, DeleteMergeRequestAwardBuilderError,
51 };
52 use crate::api::{self, Query};
53 use crate::test::client::{ExpectedUrl, SingleTestClient};
54
55 #[test]
56 fn project_merge_request_and_award_are_necessary() {
57 let err = DeleteMergeRequestAward::builder().build().unwrap_err();
58 crate::test::assert_missing_field!(err, DeleteMergeRequestAwardBuilderError, "project");
59 }
60
61 #[test]
62 fn project_is_necessary() {
63 let err = DeleteMergeRequestAward::builder()
64 .merge_request(1)
65 .award(1)
66 .build()
67 .unwrap_err();
68 crate::test::assert_missing_field!(err, DeleteMergeRequestAwardBuilderError, "project");
69 }
70
71 #[test]
72 fn merge_request_is_necessary() {
73 let err = DeleteMergeRequestAward::builder()
74 .project(1)
75 .award(1)
76 .build()
77 .unwrap_err();
78 crate::test::assert_missing_field!(
79 err,
80 DeleteMergeRequestAwardBuilderError,
81 "merge_request"
82 );
83 }
84
85 #[test]
86 fn award_is_necessary() {
87 let err = DeleteMergeRequestAward::builder()
88 .project(1)
89 .merge_request(1)
90 .build()
91 .unwrap_err();
92 crate::test::assert_missing_field!(err, DeleteMergeRequestAwardBuilderError, "award");
93 }
94
95 #[test]
96 fn project_merge_request_and_award_are_sufficient() {
97 DeleteMergeRequestAward::builder()
98 .project(1)
99 .merge_request(1)
100 .award(1)
101 .build()
102 .unwrap();
103 }
104
105 #[test]
106 fn endpoint() {
107 let endpoint = ExpectedUrl::builder()
108 .method(Method::DELETE)
109 .endpoint("projects/simple%2Fproject/merge_requests/1/award_emoji/2")
110 .build()
111 .unwrap();
112 let client = SingleTestClient::new_raw(endpoint, "");
113
114 let endpoint = DeleteMergeRequestAward::builder()
115 .project("simple/project")
116 .merge_request(1)
117 .award(2)
118 .build()
119 .unwrap();
120 api::ignore(endpoint).query(&client).unwrap();
121 }
122}