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