bo4e_core/enums/
tender_status.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
10#[cfg_attr(feature = "json-schema", schemars(rename = "Ausschreibungsstatus"))]
11#[non_exhaustive]
12pub enum TenderStatus {
13 #[serde(rename = "PHASE1")]
15 Phase1,
16
17 #[serde(rename = "PHASE2")]
19 Phase2,
20
21 #[serde(rename = "PHASE3")]
23 Phase3,
24
25 #[serde(rename = "PHASE4")]
27 Phase4,
28}
29
30impl TenderStatus {
31 pub fn german_name(&self) -> &'static str {
33 match self {
34 Self::Phase1 => "Teilnahmewettbewerb",
35 Self::Phase2 => "Angebotsphase",
36 Self::Phase3 => "Verhandlungsphase",
37 Self::Phase4 => "Zuschlagserteilung",
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_serialize() {
48 assert_eq!(
49 serde_json::to_string(&TenderStatus::Phase1).unwrap(),
50 r#""PHASE1""#
51 );
52 assert_eq!(
53 serde_json::to_string(&TenderStatus::Phase4).unwrap(),
54 r#""PHASE4""#
55 );
56 }
57
58 #[test]
59 fn test_deserialize() {
60 assert_eq!(
61 serde_json::from_str::<TenderStatus>(r#""PHASE1""#).unwrap(),
62 TenderStatus::Phase1
63 );
64 assert_eq!(
65 serde_json::from_str::<TenderStatus>(r#""PHASE3""#).unwrap(),
66 TenderStatus::Phase3
67 );
68 }
69
70 #[test]
71 fn test_roundtrip() {
72 for status in [
73 TenderStatus::Phase1,
74 TenderStatus::Phase2,
75 TenderStatus::Phase3,
76 TenderStatus::Phase4,
77 ] {
78 let json = serde_json::to_string(&status).unwrap();
79 let parsed: TenderStatus = serde_json::from_str(&json).unwrap();
80 assert_eq!(status, parsed);
81 }
82 }
83}