Self dev-dep w/ test-helpers for domain::testing. Also moved social blanket-impl + InMemoryStore tests (public API only). No private-item exceptions.
87 lines
2.1 KiB
Rust
87 lines
2.1 KiB
Rust
use domain::models::*;
|
|
use domain::testing::test_goal;
|
|
use domain::value_objects::{GoalId, UserId};
|
|
|
|
#[test]
|
|
fn new_goal_valid() {
|
|
let g = test_goal(&UserId::generate(), 2024, 52);
|
|
assert_eq!(g.year(), 2024);
|
|
assert_eq!(g.target_count(), 52);
|
|
}
|
|
|
|
#[test]
|
|
fn new_goal_rejects_year_before_2020() {
|
|
assert!(Goal::new(UserId::generate(), 2019, 10, GoalType::Movies).is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn new_goal_rejects_zero_target() {
|
|
assert!(Goal::new(UserId::generate(), 2024, 0, GoalType::Movies).is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn update_target_valid() {
|
|
let mut g = test_goal(&UserId::generate(), 2024, 10);
|
|
assert!(g.update_target(50).is_ok());
|
|
assert_eq!(g.target_count(), 50);
|
|
}
|
|
|
|
#[test]
|
|
fn update_target_rejects_zero() {
|
|
let mut g = test_goal(&UserId::generate(), 2024, 10);
|
|
assert!(g.update_target(0).is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn from_persistence_preserves_fields() {
|
|
let id = GoalId::generate();
|
|
let uid = UserId::generate();
|
|
let ts = chrono::Utc::now().naive_utc();
|
|
let g = Goal::from_persistence(id.clone(), uid.clone(), 2025, 42, GoalType::Movies, ts);
|
|
assert_eq!(*g.id(), id);
|
|
assert_eq!(*g.user_id(), uid);
|
|
assert_eq!(g.year(), 2025);
|
|
assert_eq!(g.target_count(), 42);
|
|
assert_eq!(g.created_at(), &ts);
|
|
}
|
|
|
|
#[test]
|
|
fn percentage_calculation() {
|
|
let g = test_goal(&UserId::generate(), 2024, 100);
|
|
let wp = GoalWithProgress {
|
|
goal: g,
|
|
current_count: 50,
|
|
};
|
|
assert!((wp.percentage() - 50.0).abs() < f64::EPSILON);
|
|
}
|
|
|
|
#[test]
|
|
fn percentage_caps_at_100() {
|
|
let g = test_goal(&UserId::generate(), 2024, 10);
|
|
let wp = GoalWithProgress {
|
|
goal: g,
|
|
current_count: 20,
|
|
};
|
|
assert!((wp.percentage() - 100.0).abs() < f64::EPSILON);
|
|
}
|
|
|
|
#[test]
|
|
fn is_complete() {
|
|
let g = test_goal(&UserId::generate(), 2024, 10);
|
|
let wp = GoalWithProgress {
|
|
goal: g,
|
|
current_count: 10,
|
|
};
|
|
assert!(wp.is_complete());
|
|
}
|
|
|
|
#[test]
|
|
fn is_not_complete() {
|
|
let g = test_goal(&UserId::generate(), 2024, 10);
|
|
let wp = GoalWithProgress {
|
|
goal: g,
|
|
current_count: 9,
|
|
};
|
|
assert!(!wp.is_complete());
|
|
}
|