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