/
clock.rs
41 lines (35 loc) · 854 Bytes
/
clock.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use chrono::{DateTime, Utc};
use mockable::{Clock, DefaultClock};
#[derive(Debug, Eq, PartialEq)]
#[allow(dead_code)]
struct User {
creation: DateTime<Utc>,
name: String,
}
fn create_user(name: String, clock: &dyn Clock) -> User {
User {
creation: clock.utc(),
name,
}
}
fn main() {
let user = create_user("Alice".into(), &DefaultClock);
println!("{user:?}");
}
#[cfg(test)]
mod test {
use mockable::MockClock;
use super::*;
#[test]
fn test() {
let creation = Utc::now();
let mut clock = MockClock::new();
clock.expect_utc().return_const(creation);
let expected_user = User {
creation,
name: "Alice".into(),
};
let user = create_user(expected_user.name.clone(), &clock);
assert_eq!(user, expected_user);
}
}