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