bo4e_core/enums/
payment_method.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 = "Zahlungsweise"))]
11#[non_exhaustive]
12pub enum PaymentMethod {
13 #[serde(rename = "SEPA_LASTSCHRIFT")]
15 SepaDirectDebit,
16
17 #[serde(rename = "UEBERWEISUNG")]
19 BankTransfer,
20}
21
22impl PaymentMethod {
23 pub fn german_name(&self) -> &'static str {
25 match self {
26 Self::SepaDirectDebit => "SEPA Lastschrift",
27 Self::BankTransfer => "Ueberweisung",
28 }
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_serialize() {
38 assert_eq!(
39 serde_json::to_string(&PaymentMethod::SepaDirectDebit).unwrap(),
40 r#""SEPA_LASTSCHRIFT""#
41 );
42 assert_eq!(
43 serde_json::to_string(&PaymentMethod::BankTransfer).unwrap(),
44 r#""UEBERWEISUNG""#
45 );
46 }
47
48 #[test]
49 fn test_deserialize() {
50 assert_eq!(
51 serde_json::from_str::<PaymentMethod>(r#""SEPA_LASTSCHRIFT""#).unwrap(),
52 PaymentMethod::SepaDirectDebit
53 );
54 assert_eq!(
55 serde_json::from_str::<PaymentMethod>(r#""UEBERWEISUNG""#).unwrap(),
56 PaymentMethod::BankTransfer
57 );
58 }
59
60 #[test]
61 fn test_roundtrip() {
62 for method in [PaymentMethod::SepaDirectDebit, PaymentMethod::BankTransfer] {
63 let json = serde_json::to_string(&method).unwrap();
64 let parsed: PaymentMethod = serde_json::from_str(&json).unwrap();
65 assert_eq!(method, parsed);
66 }
67 }
68}