fix: config empty values unset, drop adapter from_vars

This commit is contained in:
2026-10-25 21:18:16 +01:00
parent 9bf9342fc0
commit a00a5dc655
6 changed files with 83 additions and 88 deletions

View File

@@ -1,13 +1,25 @@
use super::*;
fn section(url: Option<&str>, mode: &str) -> ::config::NatsConfig {
::config::NatsConfig {
url: url.map(str::to_owned),
mode: mode.into(),
..Default::default()
}
}
#[test]
fn errors_without_nats_url() {
assert!(NatsConfig::from_vars(None, None, None, None, None).is_err());
assert!(NatsConfig::from_config(&::config::NatsConfig::default()).is_err());
}
#[test]
fn defaults_with_only_url() {
let cfg = NatsConfig::from_vars(Some("nats://localhost:4222"), None, None, None, None).unwrap();
let cfg = NatsConfig::from_config(&::config::NatsConfig {
url: Some("nats://localhost:4222".into()),
..Default::default()
})
.unwrap();
assert_eq!(cfg.url, "nats://localhost:4222");
assert_eq!(cfg.mode, NatsMode::JetStream);
assert_eq!(cfg.subject_prefix, "movies-diary.events");
@@ -17,31 +29,12 @@ fn defaults_with_only_url() {
#[test]
fn core_mode_parsed() {
let cfg =
NatsConfig::from_vars(Some("nats://test:4222"), Some("core"), None, None, None).unwrap();
let cfg = NatsConfig::from_config(&section(Some("nats://test:4222"), "core")).unwrap();
assert_eq!(cfg.url, "nats://test:4222");
assert_eq!(cfg.mode, NatsMode::Core);
}
#[test]
fn invalid_mode_errors() {
assert!(
NatsConfig::from_vars(Some("nats://test:4222"), Some("kafka"), None, None, None).is_err()
);
}
#[test]
fn from_config_requires_url() {
assert!(NatsConfig::from_config(&::config::NatsConfig::default()).is_err());
}
#[test]
fn from_config_uses_section_values() {
let section = ::config::NatsConfig {
url: Some("nats://test:4222".into()),
mode: "core".into(),
..Default::default()
};
let cfg = NatsConfig::from_config(&section).unwrap();
assert_eq!(cfg.url, "nats://test:4222");
assert_eq!(cfg.mode, NatsMode::Core);
assert!(NatsConfig::from_config(&section(Some("nats://test:4222"), "kafka")).is_err());
}