✅ test: add integration tests for --rules-dir feature
- Add test_init_with_separate_rules_directory to verify rules created in custom location - Add test_init_rules_dir_dry_run to verify dry-run behavior with --rules-dir - Verify config file contains correct rules path when using separate directory - All 12 init integration tests passing (11 run, 1 ignored)
This commit is contained in:
committed by
Jeremiah Russell
parent
bcb93fd68f
commit
e914e492e8
@@ -77,6 +77,76 @@ fn test_init_dry_run_new_setup() {
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_with_separate_rules_directory() {
|
||||
let temp_dir = assert_fs::TempDir::new().unwrap();
|
||||
let config_dir = temp_dir.path().join("config");
|
||||
let rules_dir = temp_dir.path().join("rules");
|
||||
|
||||
let mut cmd = Command::cargo_bin("cull-gmail").unwrap();
|
||||
cmd.args([
|
||||
"init",
|
||||
"--config-dir",
|
||||
&format!("c:{}", config_dir.to_string_lossy()),
|
||||
"--rules-dir",
|
||||
&format!("c:{}", rules_dir.to_string_lossy()),
|
||||
]);
|
||||
|
||||
cmd.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains(
|
||||
"Initialization completed successfully!",
|
||||
));
|
||||
|
||||
// Verify config directory was created
|
||||
assert!(config_dir.exists());
|
||||
assert!(config_dir.join("cull-gmail.toml").exists());
|
||||
assert!(config_dir.join("gmail1").exists());
|
||||
|
||||
// Verify rules directory was created separately
|
||||
assert!(rules_dir.exists());
|
||||
assert!(rules_dir.join("rules.toml").exists());
|
||||
|
||||
// Verify rules.toml is NOT in config directory
|
||||
assert!(!config_dir.join("rules.toml").exists());
|
||||
|
||||
// Verify config file references the correct rules path
|
||||
let config_content = std::fs::read_to_string(config_dir.join("cull-gmail.toml")).unwrap();
|
||||
let rules_path = rules_dir.join("rules.toml");
|
||||
assert!(config_content.contains(&rules_path.to_string_lossy().to_string()));
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_rules_dir_dry_run() {
|
||||
let temp_dir = assert_fs::TempDir::new().unwrap();
|
||||
let config_dir = temp_dir.path().join("config");
|
||||
let rules_dir = temp_dir.path().join("rules");
|
||||
|
||||
let mut cmd = Command::cargo_bin("cull-gmail").unwrap();
|
||||
cmd.args([
|
||||
"init",
|
||||
"--config-dir",
|
||||
&format!("c:{}", config_dir.to_string_lossy()),
|
||||
"--rules-dir",
|
||||
&format!("c:{}", rules_dir.to_string_lossy()),
|
||||
"--dry-run",
|
||||
]);
|
||||
|
||||
cmd.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains("DRY RUN: No changes will be made"))
|
||||
.stdout(predicate::str::contains("Create directory:"))
|
||||
.stdout(predicate::str::contains("rules.toml"));
|
||||
|
||||
// Verify no directories were created in dry-run
|
||||
assert!(!config_dir.exists());
|
||||
assert!(!rules_dir.exists());
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_dry_run_with_credential_file() {
|
||||
let temp_dir = assert_fs::TempDir::new().unwrap();
|
||||
|
||||
Reference in New Issue
Block a user