#![allow(clippy::unnecessary_wraps)]
use bumpversion::{
config::version::VersionComponentSpec,
version::Component,
};
use color_eyre::eyre;
#[test]
fn test_numeric_bump() -> eyre::Result<()> {
let spec = VersionComponentSpec::default();
let component = Component::new(Some("1"), spec);
let bumped = component.bump()?;
assert_eq!(bumped.value(), Some("2"));
Ok(())
}
#[test]
fn test_numeric_bump_first_value() -> eyre::Result<()> {
let spec = VersionComponentSpec {
first_value: Some("1".to_string()),
..Default::default()
};
let component = Component::new(None, spec.clone());
assert_eq!(component.value(), Some("1"));
let bumped = component.bump()?;
assert_eq!(bumped.value(), Some("2"));
Ok(())
}
#[test]
fn test_values_bump() -> eyre::Result<()> {
let spec = VersionComponentSpec {
values: vec!["alpha".to_string(), "beta".to_string(), "gamma".to_string()],
..Default::default()
};
let component = Component::new(Some("alpha"), spec.clone());
let bumped = component.bump()?;
assert_eq!(bumped.value(), Some("beta"));
let bumped = bumped.bump()?;
assert_eq!(bumped.value(), Some("gamma"));
assert!(bumped.bump().is_err(), "Should error on max value");
Ok(())
}
#[test]
fn test_values_optional_value() -> eyre::Result<()> {
let spec = VersionComponentSpec {
values: vec!["alpha".to_string(), "beta".to_string(), "gamma".to_string()],
optional_value: Some("gamma".to_string()),
..Default::default()
};
let component = Component::new(None, spec.clone());
assert_eq!(component.value(), Some("gamma"));
assert!(component.bump().is_err());
let component_alpha = Component::new(Some("alpha"), spec.clone());
assert_eq!(component_alpha.value(), Some("alpha"));
let bumped = component_alpha.bump()?;
assert_eq!(bumped.value(), Some("beta"));
Ok(())
}
#[test]
fn test_reset_to_first() -> eyre::Result<()> {
let spec = VersionComponentSpec::default(); let component = Component::new(Some("5"), spec);
let reset = component.first();
assert_eq!(reset.value(), Some("0"));
Ok(())
}
#[test]
fn test_reset_to_first_values() -> eyre::Result<()> {
let spec = VersionComponentSpec {
values: vec!["a".to_string(), "b".to_string()],
..Default::default()
};
let component = Component::new(Some("b"), spec);
let reset = component.first();
assert_eq!(reset.value(), Some("a"));
Ok(())
}