use anyhow::Result;
use semver::Version;
use std::fs;
use tempfile::tempdir;
use project_version::project::detect_project;
#[test]
fn test_bump_command_functionality() -> Result<()> {
let temp_dir = tempdir()?;
let package_json_path = temp_dir.path().join("package.json");
fs::write(
&package_json_path,
r#"{
"name": "test-project",
"version": "1.2.3",
"description": "Test project"
}
"#,
)?;
let project = detect_project(temp_dir.path().to_str().unwrap())?;
let version = project.get_version()?;
assert_eq!(version, Version::new(1, 2, 3));
let new_version = Version::new(1, 2, 4); project.update_version(&new_version)?;
let updated_version = project.get_version()?;
assert_eq!(updated_version, Version::new(1, 2, 4));
let new_version = Version::new(1, 3, 0); project.update_version(&new_version)?;
let updated_version = project.get_version()?;
assert_eq!(updated_version, Version::new(1, 3, 0));
let new_version = Version::new(2, 0, 0); project.update_version(&new_version)?;
let updated_version = project.get_version()?;
assert_eq!(updated_version, Version::new(2, 0, 0));
let content = fs::read_to_string(&package_json_path)?;
assert!(content.contains(r#""version": "2.0.0""#));
Ok(())
}