basic/
basic.rs

1use chrono::{DateTime, Utc};
2use clocks::Clock;
3
4struct Prod {
5    clock: Clock<Utc>,
6}
7
8impl Prod {
9    pub fn new() -> Self {
10        Self::new_with_clock(Clock::new())
11    }
12
13    pub fn new_with_clock(clock: Clock<Utc>) -> Self {
14        Self { clock }
15    }
16
17    pub fn get_time(&self) -> String {
18        self.clock.now().to_rfc2822()
19    }
20}
21
22fn main() {
23    let p = Prod::new();
24    println!("{}", p.get_time());
25}
26
27#[test]
28fn test_basic() {
29    let start = DateTime::parse_from_rfc2822("Sun, 18 Sep 2022 20:53:00 GMT")
30        .unwrap()
31        .with_timezone(&Utc);
32    let c = Clock::new_fake(start.clone());
33    let p = Prod::new_with_clock(c);
34    assert_eq!(p.get_time(), "Sun, 18 Sep 2022 20:53:00 +0000");
35}