use chrono::{NaiveDateTime, Utc};
pub trait FrecencyEnvironment {
fn now(&self) -> NaiveDateTime;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct RealEnvironment;
impl FrecencyEnvironment for RealEnvironment {
fn now(&self) -> NaiveDateTime {
Utc::now().naive_utc()
}
}
#[derive(Debug, Clone, Copy)]
pub struct MockEnvironment {
pub fixed: NaiveDateTime,
}
impl MockEnvironment {
#[must_use]
pub fn at(fixed: NaiveDateTime) -> Self {
Self { fixed }
}
}
impl FrecencyEnvironment for MockEnvironment {
fn now(&self) -> NaiveDateTime {
self.fixed
}
}