♻️ Refactor duplicated InitCli creation in tests

Extract repeated InitCli instance creation into helper functions:
- create_test_init_cli() for default test instances
- create_test_init_cli_with_force() for force-enabled instances

This reduces code duplication and makes test setup more maintainable.
This commit is contained in:
Jeremiah Russell
2025-10-21 22:20:08 +01:00
committed by Jeremiah Russell
parent acb5e11b4b
commit d92d4ad9c0

View File

@@ -21,6 +21,30 @@ mod unit_tests {
fs::write(dir.join("credential.json"), credential_content) fs::write(dir.join("credential.json"), credential_content)
} }
/// Test helper to create a default InitCli instance
fn create_test_init_cli() -> InitCli {
InitCli {
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
}
}
/// Test helper to create an InitCli instance with force enabled
fn create_test_init_cli_with_force() -> InitCli {
InitCli {
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: true,
dry_run: false,
interactive: false,
}
}
#[test] #[test]
fn test_parse_config_root_home() { fn test_parse_config_root_home() {
let result = parse_config_root("h:.test-config"); let result = parse_config_root("h:.test-config");
@@ -71,14 +95,7 @@ mod unit_tests {
let temp_dir = TempDir::new().unwrap(); let temp_dir = TempDir::new().unwrap();
create_mock_credential_file(temp_dir.path()).unwrap(); create_mock_credential_file(temp_dir.path()).unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let credential_path = temp_dir.path().join("credential.json"); let credential_path = temp_dir.path().join("credential.json");
let result = init_cli.validate_credential_file(&credential_path); let result = init_cli.validate_credential_file(&credential_path);
@@ -88,14 +105,7 @@ mod unit_tests {
#[test] #[test]
fn test_validate_credential_file_not_found() { fn test_validate_credential_file_not_found() {
let temp_dir = TempDir::new().unwrap(); let temp_dir = TempDir::new().unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let nonexistent_path = temp_dir.path().join("nonexistent.json"); let nonexistent_path = temp_dir.path().join("nonexistent.json");
let result = init_cli.validate_credential_file(&nonexistent_path); let result = init_cli.validate_credential_file(&nonexistent_path);
@@ -109,14 +119,7 @@ mod unit_tests {
let credential_path = temp_dir.path().join("invalid.json"); let credential_path = temp_dir.path().join("invalid.json");
fs::write(&credential_path, "invalid json content").unwrap(); fs::write(&credential_path, "invalid json content").unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let result = init_cli.validate_credential_file(&credential_path); let result = init_cli.validate_credential_file(&credential_path);
assert!(result.is_err()); assert!(result.is_err());
@@ -133,14 +136,7 @@ mod unit_tests {
let temp_dir = TempDir::new().unwrap(); let temp_dir = TempDir::new().unwrap();
let config_path = temp_dir.path().join("new-config"); let config_path = temp_dir.path().join("new-config");
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let operations = init_cli.plan_operations(&config_path, None).unwrap(); let operations = init_cli.plan_operations(&config_path, None).unwrap();
@@ -186,14 +182,7 @@ mod unit_tests {
create_mock_credential_file(temp_dir.path()).unwrap(); create_mock_credential_file(temp_dir.path()).unwrap();
fs::rename(temp_dir.path().join("credential.json"), &cred_path).unwrap(); fs::rename(temp_dir.path().join("credential.json"), &cred_path).unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let operations = init_cli let operations = init_cli
.plan_operations(&config_path, Some(&cred_path)) .plan_operations(&config_path, Some(&cred_path))
@@ -224,14 +213,7 @@ mod unit_tests {
// Create existing config file // Create existing config file
fs::write(config_path.join("cull-gmail.toml"), "existing config").unwrap(); fs::write(config_path.join("cull-gmail.toml"), "existing config").unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let result = init_cli.plan_operations(&config_path, None); let result = init_cli.plan_operations(&config_path, None);
assert!(result.is_err()); assert!(result.is_err());
@@ -248,14 +230,7 @@ mod unit_tests {
fs::write(config_path.join("cull-gmail.toml"), "existing config").unwrap(); fs::write(config_path.join("cull-gmail.toml"), "existing config").unwrap();
fs::write(config_path.join("rules.toml"), "existing rules").unwrap(); fs::write(config_path.join("rules.toml"), "existing rules").unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli_with_force();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: true,
dry_run: false,
interactive: false,
};
let operations = init_cli.plan_operations(&config_path, None).unwrap(); let operations = init_cli.plan_operations(&config_path, None).unwrap();
@@ -281,14 +256,7 @@ mod unit_tests {
let test_file = temp_dir.path().join("test.txt"); let test_file = temp_dir.path().join("test.txt");
fs::write(&test_file, "test content").unwrap(); fs::write(&test_file, "test content").unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let result = init_cli.create_backup(&test_file); let result = init_cli.create_backup(&test_file);
assert!(result.is_ok()); assert!(result.is_ok());
@@ -324,14 +292,7 @@ mod unit_tests {
let test_file = temp_dir.path().join("test.txt"); let test_file = temp_dir.path().join("test.txt");
fs::write(&test_file, "test content").unwrap(); fs::write(&test_file, "test content").unwrap();
let init_cli = InitCli { let init_cli = create_test_init_cli();
rules_dir: None,
config_dir: "test".to_string(),
credential_file: None,
force: false,
dry_run: false,
interactive: false,
};
let result = init_cli.set_permissions(&test_file, 0o600); let result = init_cli.set_permissions(&test_file, 0o600);
assert!(result.is_ok()); assert!(result.is_ok());