use crate::config::ProviderConfigs;
use crate::config::xiaomi_provider_defaults;
#[test]
fn missing_xiaomi_section_deserializes_to_canonical_defaults() {
let cfgs: ProviderConfigs = toml::from_str("").expect("empty providers should parse");
let xiaomi = cfgs.xiaomi.expect("xiaomi must default to Some, not None");
assert!(xiaomi.enabled, "default provider is enabled");
assert_eq!(xiaomi.default_model.as_deref(), Some("mimo-v2.5-pro"));
assert!(xiaomi.api_key.is_none(), "keyless — the proxy supplies the key");
assert!(
xiaomi.base_url.is_none(),
"base_url stays None so the factory uses the proxy default"
);
assert_eq!(xiaomi.models, xiaomi_provider_defaults().models);
}
#[test]
fn present_xiaomi_section_is_left_untouched() {
let toml = "[xiaomi]\nenabled = true\ndefault_model = \"mimo-v2-flash\"\napi_key = \"user-key\"\n";
let cfgs: ProviderConfigs = toml::from_str(toml).expect("parse");
let xiaomi = cfgs.xiaomi.expect("present");
assert_eq!(xiaomi.default_model.as_deref(), Some("mimo-v2-flash"));
assert_eq!(xiaomi.api_key.as_deref(), Some("user-key"));
assert!(
xiaomi.models.is_empty(),
"default model list must NOT be grafted onto an explicit section"
);
}
#[test]
fn programmatic_default_keeps_xiaomi_none() {
assert!(ProviderConfigs::default().xiaomi.is_none());
}