bo4e_core/enums/
business_partner_role.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
12#[cfg_attr(feature = "json-schema", schemars(rename = "Geschaeftspartnerrolle"))]
13#[non_exhaustive]
14pub enum BusinessPartnerRole {
15 #[serde(rename = "LIEFERANT")]
17 Supplier,
18
19 #[serde(rename = "DIENSTLEISTER")]
21 ServiceProvider,
22
23 #[serde(rename = "KUNDE")]
25 Customer,
26
27 #[serde(rename = "INTERESSENT")]
29 InterestedParty,
30
31 #[serde(rename = "MARKTPARTNER")]
33 MarketPartner,
34
35 #[serde(rename = "NETZBETREIBER")]
37 NetworkOperator,
38}
39
40impl BusinessPartnerRole {
41 pub fn german_name(&self) -> &'static str {
43 match self {
44 Self::Supplier => "Lieferant",
45 Self::ServiceProvider => "Dienstleister",
46 Self::Customer => "Kunde",
47 Self::InterestedParty => "Interessent",
48 Self::MarketPartner => "Marktpartner",
49 Self::NetworkOperator => "Netzbetreiber",
50 }
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn test_serialize() {
60 assert_eq!(
61 serde_json::to_string(&BusinessPartnerRole::Supplier).unwrap(),
62 r#""LIEFERANT""#
63 );
64 assert_eq!(
65 serde_json::to_string(&BusinessPartnerRole::Customer).unwrap(),
66 r#""KUNDE""#
67 );
68 }
69
70 #[test]
71 fn test_deserialize() {
72 assert_eq!(
73 serde_json::from_str::<BusinessPartnerRole>(r#""LIEFERANT""#).unwrap(),
74 BusinessPartnerRole::Supplier
75 );
76 assert_eq!(
77 serde_json::from_str::<BusinessPartnerRole>(r#""DIENSTLEISTER""#).unwrap(),
78 BusinessPartnerRole::ServiceProvider
79 );
80 }
81
82 #[test]
83 fn test_roundtrip() {
84 for role in [
85 BusinessPartnerRole::Supplier,
86 BusinessPartnerRole::ServiceProvider,
87 BusinessPartnerRole::Customer,
88 BusinessPartnerRole::InterestedParty,
89 BusinessPartnerRole::MarketPartner,
90 BusinessPartnerRole::NetworkOperator,
91 ] {
92 let json = serde_json::to_string(&role).unwrap();
93 let parsed: BusinessPartnerRole = serde_json::from_str(&json).unwrap();
94 assert_eq!(role, parsed);
95 }
96 }
97}