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