From 1ff704c189163c9988a11af78de270feef64c9c9 Mon Sep 17 00:00:00 2001 From: Ruslan Pislari Date: Mon, 27 Oct 2025 14:16:35 +0200 Subject: [PATCH] fix: default no value for kv store param --- crates/runtime/src/app.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/crates/runtime/src/app.rs b/crates/runtime/src/app.rs index 2b1ff3f..0973d90 100644 --- a/crates/runtime/src/app.rs +++ b/crates/runtime/src/app.rs @@ -34,6 +34,7 @@ pub struct App { #[derive(Debug, Clone, PartialEq, Deserialize)] pub struct KvStoreOption { /// The url + #[serde(default)] pub param: SmolStr, #[serde(default)] pub name: SmolStr, @@ -186,4 +187,35 @@ mod tests { assert_eq!(expected, assert_ok!(serde_json::from_str(&json))); } + + #[test] + fn test_kv_store_option_deserialize_defaults() { + let json = r#"{ + "name": "store", + "prefix": "pre" + }"#; + let kv: KvStoreOption = serde_json::from_str(json).unwrap(); + assert_eq!(kv.param, ""); + assert_eq!(kv.name, "store"); + assert_eq!(kv.prefix, "pre"); + assert_eq!(kv.cache_size, 1000); + assert_eq!(kv.cache_ttl, 60); + } + + #[test] + fn test_kv_store_option_deserialize_custom() { + let json = r#"{ + "param": "url2", + "name": "store2", + "prefix": "pre2", + "cache_size": 5000, + "cache_ttl": 120 + }"#; + let kv: KvStoreOption = serde_json::from_str(json).unwrap(); + assert_eq!(kv.param, "url2"); + assert_eq!(kv.name, "store2"); + assert_eq!(kv.prefix, "pre2"); + assert_eq!(kv.cache_size, 5000); + assert_eq!(kv.cache_ttl, 120); + } }