✅ Add integration tests for --skip-rules
This commit is contained in:
committed by
Jeremiah Russell
parent
e33c0320a0
commit
cc8259bd6a
@@ -420,3 +420,117 @@ fn test_init_oauth_integration() {
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_with_skip_rules_dry_run_shows_skipped() {
|
||||
let temp_dir = assert_fs::TempDir::new().unwrap();
|
||||
let config_dir = temp_dir.path().join("test-config");
|
||||
|
||||
let mut cmd = Command::cargo_bin("cull-gmail").unwrap();
|
||||
cmd.args([
|
||||
"init",
|
||||
"--skip-rules",
|
||||
"--dry-run",
|
||||
"--config-dir",
|
||||
&format!("c:{}", config_dir.to_string_lossy()),
|
||||
]);
|
||||
|
||||
cmd.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains("DRY RUN: No changes will be made"))
|
||||
.stdout(predicate::str::contains("Planned operations:"))
|
||||
.stdout(predicate::str::contains("cull-gmail.toml"))
|
||||
.stdout(predicate::str::contains(
|
||||
"rules.toml: skipped (per --skip-rules flag)",
|
||||
))
|
||||
.stdout(predicate::str::contains(
|
||||
"The rules file path is configured in cull-gmail.toml",
|
||||
))
|
||||
.stdout(predicate::str::contains(
|
||||
"Expected to be provided externally",
|
||||
));
|
||||
|
||||
// Verify no files were actually created
|
||||
assert!(!config_dir.exists());
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_with_skip_rules_creates_config_but_not_rules() {
|
||||
let temp_dir = assert_fs::TempDir::new().unwrap();
|
||||
let config_dir = temp_dir.path().join("test-config");
|
||||
|
||||
let mut cmd = Command::cargo_bin("cull-gmail").unwrap();
|
||||
cmd.args([
|
||||
"init",
|
||||
"--skip-rules",
|
||||
"--config-dir",
|
||||
&format!("c:{}", config_dir.to_string_lossy()),
|
||||
]);
|
||||
|
||||
cmd.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains(
|
||||
"Initialization completed successfully!",
|
||||
))
|
||||
.stdout(predicate::str::contains(
|
||||
"rules.toml (SKIPPED - expected to be provided externally)",
|
||||
));
|
||||
|
||||
// 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.toml was NOT created
|
||||
assert!(!config_dir.join("rules.toml").exists());
|
||||
|
||||
// Verify config file contains skip-rules comment
|
||||
let config_content = std::fs::read_to_string(config_dir.join("cull-gmail.toml")).unwrap();
|
||||
assert!(config_content.contains("NOTE: rules.toml creation was skipped via --skip-rules flag"));
|
||||
assert!(config_content.contains("expected to be provided externally"));
|
||||
assert!(config_content.contains("rules = \"rules.toml\""));
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_init_with_skip_rules_and_rules_dir_creates_dir_only() {
|
||||
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",
|
||||
"--skip-rules",
|
||||
"--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());
|
||||
|
||||
// Verify rules directory was created
|
||||
assert!(rules_dir.exists());
|
||||
|
||||
// Verify rules.toml was NOT created in either directory
|
||||
assert!(!config_dir.join("rules.toml").exists());
|
||||
assert!(!rules_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 expected_rules_path = rules_dir.join("rules.toml");
|
||||
assert!(config_content.contains(&expected_rules_path.to_string_lossy().to_string()));
|
||||
assert!(config_content.contains("NOTE: rules.toml creation was skipped via --skip-rules flag"));
|
||||
|
||||
temp_dir.close().unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user