1use serde_json::Value;
7
8pub fn js_value_to_serde_value(value: Option<Value>) -> Value {
18 value.unwrap_or_else(|| Value::Object(serde_json::Map::new()))
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn test_js_value_to_serde_value_none_returns_empty_object() {
27 let result = js_value_to_serde_value(None);
28 assert_eq!(result, Value::Object(serde_json::Map::new()));
29 }
30
31 #[test]
32 fn test_js_value_to_serde_value_some_returns_value() {
33 let input = Value::String("hello".to_string());
34 let result = js_value_to_serde_value(Some(input.clone()));
35 assert_eq!(result, input);
36 }
37
38 #[test]
39 fn test_js_value_to_serde_value_some_object() {
40 let mut map = serde_json::Map::new();
41 map.insert("key".to_string(), Value::Number(42.into()));
42 let input = Value::Object(map.clone());
43 let result = js_value_to_serde_value(Some(input));
44 assert_eq!(result, Value::Object(map));
45 }
46
47 #[test]
48 fn test_js_value_to_serde_value_some_array() {
49 let input = Value::Array(vec![Value::Bool(true), Value::Null]);
50 let result = js_value_to_serde_value(Some(input.clone()));
51 assert_eq!(result, input);
52 }
53}