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