53
crates/domain/tests/metric/daily_metric_test.rs
Normal file
53
crates/domain/tests/metric/daily_metric_test.rs
Normal file
@@ -0,0 +1,53 @@
|
||||
use domain::entry::Date;
|
||||
use domain::metric::{DailyMetric, MetricValue, Source, Steps};
|
||||
use domain::provider::ProviderName;
|
||||
use domain::user::UserId;
|
||||
|
||||
fn a_date() -> Date {
|
||||
Date::from_persistence("2026-08-26".parse().unwrap())
|
||||
}
|
||||
|
||||
fn steps(count: u32, source: Source) -> DailyMetric {
|
||||
DailyMetric::new(
|
||||
UserId::generate(),
|
||||
a_date(),
|
||||
MetricValue::Steps(Steps::new(count).unwrap()),
|
||||
source,
|
||||
)
|
||||
}
|
||||
|
||||
fn a_provider() -> Source {
|
||||
Source::Provider(ProviderName::new("healthkit").unwrap())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_manual_count_supersedes_one_a_provider_reported() {
|
||||
let manual = steps(8_412, Source::Manual);
|
||||
let imported = steps(8_000, a_provider());
|
||||
|
||||
assert!(manual.supersedes(&imported));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_provider_does_not_overwrite_a_count_the_user_stated() {
|
||||
let manual = steps(8_412, Source::Manual);
|
||||
let imported = steps(8_000, a_provider());
|
||||
|
||||
assert!(!imported.supersedes(&manual));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_later_import_replaces_an_earlier_one() {
|
||||
let earlier = steps(8_000, a_provider());
|
||||
let later = steps(8_412, a_provider());
|
||||
|
||||
assert!(later.supersedes(&earlier));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_correction_replaces_the_count_the_user_stated_before() {
|
||||
let stated = steps(8_000, Source::Manual);
|
||||
let corrected = steps(8_412, Source::Manual);
|
||||
|
||||
assert!(corrected.supersedes(&stated));
|
||||
}
|
||||
Reference in New Issue
Block a user