54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
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));
|
|
}
|