stygian_graph/application/
config.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Config {
8 pub log_level: String,
10 pub workers: usize,
12}
13
14impl Default for Config {
15 fn default() -> Self {
16 Self {
17 log_level: "info".to_string(),
18 workers: 4,
19 }
20 }
21}
22
23#[cfg(test)]
24#[allow(clippy::unwrap_used)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn default_log_level_is_info() {
30 let cfg = Config::default();
31 assert_eq!(cfg.log_level, "info");
32 }
33
34 #[test]
35 fn default_workers_is_four() {
36 let cfg = Config::default();
37 assert_eq!(cfg.workers, 4);
38 }
39
40 #[test]
41 fn config_serializes_to_json() {
42 let cfg = Config::default();
43 let json = serde_json::to_string(&cfg).unwrap();
44 assert!(json.contains("log_level"));
45 assert!(json.contains("workers"));
46 }
47
48 #[test]
49 fn config_roundtrips_through_json() {
50 let cfg = Config {
51 log_level: "debug".to_string(),
52 workers: 8,
53 };
54 let json = serde_json::to_string(&cfg).unwrap();
55 let back: Config = serde_json::from_str(&json).unwrap();
56 assert_eq!(back.log_level, "debug");
57 assert_eq!(back.workers, 8);
58 }
59}