100 lines
2.3 KiB
Rust
100 lines
2.3 KiB
Rust
use domain::activity::{Activity, ActivityName, CategoryName};
|
|
use domain::errors::DomainError;
|
|
use domain::user::UserId;
|
|
|
|
#[test]
|
|
fn new_activity_is_not_archived() {
|
|
let category = CategoryName::new("hobbies").unwrap();
|
|
let activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
Some(category.clone()),
|
|
);
|
|
|
|
assert!(!activity.is_archived());
|
|
assert_eq!(activity.name().value(), "gaming");
|
|
assert_eq!(activity.category().map(|c| c.value()), Some("hobbies"));
|
|
}
|
|
|
|
#[test]
|
|
fn archive_sets_archived_flag() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
activity.archive().unwrap();
|
|
|
|
assert!(activity.is_archived());
|
|
}
|
|
|
|
#[test]
|
|
fn archiving_already_archived_activity_fails() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
activity.archive().unwrap();
|
|
let result = activity.archive();
|
|
|
|
assert!(matches!(result, Err(DomainError::Conflict(_))));
|
|
}
|
|
|
|
#[test]
|
|
fn unarchive_clears_archived_flag() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
activity.archive().unwrap();
|
|
activity.unarchive().unwrap();
|
|
|
|
assert!(!activity.is_archived());
|
|
}
|
|
|
|
#[test]
|
|
fn unarchiving_active_activity_fails() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
let result = activity.unarchive();
|
|
|
|
assert!(matches!(result, Err(DomainError::Conflict(_))));
|
|
}
|
|
|
|
#[test]
|
|
fn rename_updates_name() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
activity.rename(ActivityName::new("video games").unwrap());
|
|
|
|
assert_eq!(activity.name().value(), "video games");
|
|
}
|
|
|
|
#[test]
|
|
fn set_category_updates_category() {
|
|
let mut activity = Activity::new(
|
|
UserId::generate(),
|
|
ActivityName::new("gaming").unwrap(),
|
|
None,
|
|
);
|
|
|
|
activity.set_category(Some(CategoryName::new("hobbies").unwrap()));
|
|
assert_eq!(activity.category().map(|c| c.value()), Some("hobbies"));
|
|
|
|
activity.set_category(None);
|
|
assert_eq!(activity.category(), None);
|
|
}
|