use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ApiConfig {
pub prefix: String,
pub default_version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TracingConfig {
pub enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EnvHelper {
pub environment: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tracing_config_default() {
let config = TracingConfig::default();
assert!(!config.enabled);
}
#[test]
fn test_tracing_config_enabled() {
let config = TracingConfig { enabled: true };
assert!(config.enabled);
}
#[test]
fn test_tracing_config_serialization() {
let config = TracingConfig { enabled: true };
let json = serde_json::to_string(&config).unwrap();
let deserialized: TracingConfig = serde_json::from_str(&json).unwrap();
assert!(deserialized.enabled);
}
#[test]
fn test_env_helper_default() {
let config = EnvHelper::default();
assert!(config.environment.is_empty());
}
#[test]
fn test_env_helper_custom() {
let config = EnvHelper {
environment: "production".to_string(),
};
assert_eq!(config.environment, "production");
}
#[test]
fn test_env_helper_serialization() {
let config = EnvHelper {
environment: "staging".to_string(),
};
let json = serde_json::to_string(&config).unwrap();
let deserialized: EnvHelper = serde_json::from_str(&json).unwrap();
assert_eq!(deserialized.environment, "staging");
}
#[test]
fn test_api_config_default() {
let config = ApiConfig::default();
assert!(config.prefix.is_empty());
assert!(config.default_version.is_empty());
}
#[test]
fn test_api_config_custom() {
let config = ApiConfig {
prefix: "/api".to_string(),
default_version: "v1".to_string(),
};
assert_eq!(config.prefix, "/api");
assert_eq!(config.default_version, "v1");
}
#[test]
fn test_api_config_serialization() {
let config = ApiConfig {
prefix: "/v2".to_string(),
default_version: "v2".to_string(),
};
let json = serde_json::to_string(&config).unwrap();
let deserialized: ApiConfig = serde_json::from_str(&json).unwrap();
assert_eq!(deserialized.prefix, "/v2");
assert_eq!(deserialized.default_version, "v2");
}
}