chip_sdk/model/
payment_methods.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5pub struct PaymentMethods {
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub available_payment_methods: Option<Vec<String>>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub by_country: Option<HashMap<String, Vec<String>>>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub country_names: Option<HashMap<String, String>>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub names: Option<HashMap<String, String>>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub card_methods: Option<Vec<String>>,
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn deserialize_payment_methods() {
24 let json = r#"{"available_payment_methods":["visa","mastercard","fpx"],"by_country":{"MY":["visa","fpx"],"any":["mastercard"]},"country_names":{"MY":"Malaysia","any":"Other"},"names":{"visa":"Visa","mastercard":"Mastercard","fpx":"FPX"},"card_methods":["visa","mastercard"]}"#;
25 let pm: PaymentMethods = serde_json::from_str(json).unwrap();
26 assert_eq!(pm.available_payment_methods.as_ref().unwrap().len(), 3);
27 assert_eq!(pm.by_country.as_ref().unwrap().get("MY").unwrap().len(), 2);
28 assert_eq!(pm.names.as_ref().unwrap().get("visa").unwrap(), "Visa");
29 }
30}