gitlab/api/projects/issues/notes/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 DeleteIssueNoteAward<'a> {
15 #[builder(setter(into))]
17 project: NameOrId<'a>,
18 issue: u64,
20 note: u64,
22 award: u64,
24}
25
26impl<'a> DeleteIssueNoteAward<'a> {
27 pub fn builder() -> DeleteIssueNoteAwardBuilder<'a> {
29 DeleteIssueNoteAwardBuilder::default()
30 }
31}
32
33impl Endpoint for DeleteIssueNoteAward<'_> {
34 fn method(&self) -> Method {
35 Method::DELETE
36 }
37
38 fn endpoint(&self) -> Cow<'static, str> {
39 format!(
40 "projects/{}/issues/{}/notes/{}/award_emoji/{}",
41 self.project, self.issue, self.note, self.award,
42 )
43 .into()
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use http::Method;
50
51 use crate::api::projects::issues::notes::awards::{
52 DeleteIssueNoteAward, DeleteIssueNoteAwardBuilderError,
53 };
54 use crate::api::{self, Query};
55 use crate::test::client::{ExpectedUrl, SingleTestClient};
56
57 #[test]
58 fn project_issue_note_and_award_are_necessary() {
59 let err = DeleteIssueNoteAward::builder().build().unwrap_err();
60 crate::test::assert_missing_field!(err, DeleteIssueNoteAwardBuilderError, "project");
61 }
62
63 #[test]
64 fn project_is_necessary() {
65 let err = DeleteIssueNoteAward::builder()
66 .issue(1)
67 .note(1)
68 .award(1)
69 .build()
70 .unwrap_err();
71 crate::test::assert_missing_field!(err, DeleteIssueNoteAwardBuilderError, "project");
72 }
73
74 #[test]
75 fn issue_is_necessary() {
76 let err = DeleteIssueNoteAward::builder()
77 .project(1)
78 .note(1)
79 .award(1)
80 .build()
81 .unwrap_err();
82 crate::test::assert_missing_field!(err, DeleteIssueNoteAwardBuilderError, "issue");
83 }
84
85 #[test]
86 fn note_is_necessary() {
87 let err = DeleteIssueNoteAward::builder()
88 .project(1)
89 .issue(1)
90 .award(1)
91 .build()
92 .unwrap_err();
93 crate::test::assert_missing_field!(err, DeleteIssueNoteAwardBuilderError, "note");
94 }
95
96 #[test]
97 fn award_is_necessary() {
98 let err = DeleteIssueNoteAward::builder()
99 .project(1)
100 .issue(1)
101 .note(1)
102 .build()
103 .unwrap_err();
104 crate::test::assert_missing_field!(err, DeleteIssueNoteAwardBuilderError, "award");
105 }
106
107 #[test]
108 fn project_issue_note_and_award_are_sufficient() {
109 DeleteIssueNoteAward::builder()
110 .project(1)
111 .issue(1)
112 .note(1)
113 .award(1)
114 .build()
115 .unwrap();
116 }
117
118 #[test]
119 fn endpoint() {
120 let endpoint = ExpectedUrl::builder()
121 .method(Method::DELETE)
122 .endpoint("projects/simple%2Fproject/issues/1/notes/2/award_emoji/3")
123 .build()
124 .unwrap();
125 let client = SingleTestClient::new_raw(endpoint, "");
126
127 let endpoint = DeleteIssueNoteAward::builder()
128 .project("simple/project")
129 .issue(1)
130 .note(2)
131 .award(3)
132 .build()
133 .unwrap();
134 api::ignore(endpoint).query(&client).unwrap();
135 }
136}