#![allow(clippy::unwrap_used)]
use crate::config::BackupConfig;
fn determine_backup_setting(override_value: Option<bool>, config_value: bool) -> bool {
override_value.unwrap_or(config_value)
}
#[test]
fn test_backup_enabled_override_logic() {
let config_backup_disabled = false;
let effective = determine_backup_setting(None, config_backup_disabled);
assert!(!effective, "None override should use config value (false)");
let effective = determine_backup_setting(Some(true), config_backup_disabled);
assert!(effective, "Some(true) override should force backup enabled");
let effective = determine_backup_setting(Some(false), config_backup_disabled);
assert!(!effective, "Some(false) override should force backup disabled");
}
#[test]
fn test_backup_enabled_in_config_logic() {
let config_backup_enabled = true;
let effective = determine_backup_setting(None, config_backup_enabled);
assert!(effective, "None override should use config value (true)");
let effective = determine_backup_setting(Some(true), config_backup_enabled);
assert!(effective, "Some(true) override should keep backup enabled");
let effective = determine_backup_setting(Some(false), config_backup_enabled);
assert!(!effective, "Some(false) override should disable backup despite config");
}
#[test]
fn test_cleanup_respects_backup_setting_logic() {
let config_with_backup = BackupConfig {
enabled: true,
backup_dir: ".workspace-backups".to_string(),
keep_after_success: false,
max_backups: 10,
};
let config_without_backup = BackupConfig {
enabled: false,
backup_dir: ".workspace-backups".to_string(),
keep_after_success: false,
max_backups: 10,
};
let should_cleanup = config_with_backup.enabled && !config_with_backup.keep_after_success;
assert!(
should_cleanup,
"Cleanup should occur when backups enabled and keep_after_success is false"
);
let should_cleanup = config_without_backup.enabled && !config_without_backup.keep_after_success;
assert!(!should_cleanup, "Cleanup should not occur when backups disabled");
let effective_backup = determine_backup_setting(Some(false), config_with_backup.enabled);
let should_cleanup = effective_backup && !config_with_backup.keep_after_success;
assert!(!should_cleanup, "Cleanup should not occur when backup disabled via override");
}