1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
pub use near_primitives_core::serialize::*;

#[cfg(test)]
mod tests {
    use serde::{Deserialize, Serialize};

    use crate::types::StoreKey;

    use super::*;

    #[derive(Deserialize, Serialize)]
    struct OptionBytesStruct {
        #[serde(with = "option_base64_format")]
        data: Option<Vec<u8>>,
    }

    #[derive(Deserialize, Serialize)]
    struct StoreKeyStruct {
        #[serde(with = "base64_format")]
        store_key: StoreKey,
    }

    #[test]
    fn test_serialize_some() {
        let s = OptionBytesStruct { data: Some(vec![10, 20, 30]) };
        let encoded = serde_json::to_string(&s).unwrap();
        assert_eq!(encoded, "{\"data\":\"ChQe\"}");
    }

    #[test]
    fn test_deserialize_some() {
        let encoded = "{\"data\":\"ChQe\"}";
        let decoded: OptionBytesStruct = serde_json::from_str(&encoded).unwrap();
        assert_eq!(decoded.data, Some(vec![10, 20, 30]));
    }

    #[test]
    fn test_serialize_none() {
        let s = OptionBytesStruct { data: None };
        let encoded = serde_json::to_string(&s).unwrap();
        assert_eq!(encoded, "{\"data\":null}");
    }

    #[test]
    fn test_deserialize_none() {
        let encoded = "{\"data\":null}";
        let decoded: OptionBytesStruct = serde_json::from_str(&encoded).unwrap();
        assert_eq!(decoded.data, None);
    }

    #[test]
    fn test_serialize_store_key() {
        let s = StoreKeyStruct { store_key: StoreKey::from(vec![10, 20, 30]) };
        let encoded = serde_json::to_string(&s).unwrap();
        assert_eq!(encoded, "{\"store_key\":\"ChQe\"}");
    }

    #[test]
    fn test_deserialize_store_key() {
        let encoded = "{\"store_key\":\"ChQe\"}";
        let decoded: StoreKeyStruct = serde_json::from_str(&encoded).unwrap();
        assert_eq!(decoded.store_key, StoreKey::from(vec![10, 20, 30]));
    }
}