deribit_http/model/
affiliate.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9pub struct AffiliateProgramInfo {
10 pub is_enabled: bool,
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub link: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub number_of_affiliates: Option<u64>,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub received: Option<f64>,
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn test_affiliate_info_deserialization() {
29 let json = r#"{
30 "is_enabled": true,
31 "link": "https://deribit.com/?ref=ABC123",
32 "number_of_affiliates": 5,
33 "received": 0.001
34 }"#;
35
36 let info: AffiliateProgramInfo = serde_json::from_str(json).expect("Failed to parse");
37 assert!(info.is_enabled);
38 assert!(info.link.is_some());
39 assert_eq!(info.number_of_affiliates, Some(5));
40 }
41
42 #[test]
43 fn test_affiliate_info_disabled() {
44 let json = r#"{
45 "is_enabled": false
46 }"#;
47
48 let info: AffiliateProgramInfo = serde_json::from_str(json).expect("Failed to parse");
49 assert!(!info.is_enabled);
50 assert!(info.link.is_none());
51 }
52}