use tiny_counter::{EventStore, TimeUnit};
#[test]
fn check_does_not_record() {
let store = EventStore::new();
let result = store
.limit()
.at_most("action", 10, TimeUnit::Hours)
.check("action");
assert!(result.is_ok());
assert_eq!(store.query("action").last_hours(1).sum(), None);
}
#[test]
fn check_and_record_records_on_success() {
let store = EventStore::new();
let result = store
.limit()
.at_most("action", 10, TimeUnit::Hours)
.check_and_record("action");
assert!(result.is_ok());
assert_eq!(store.query("action").last_hours(1).sum(), Some(1));
}
#[test]
fn check_and_record_does_not_record_on_failure() {
let store = EventStore::new();
for _ in 0..10 {
store.record("action");
}
let result = store
.limit()
.at_most("action", 10, TimeUnit::Hours)
.check_and_record("action");
assert!(result.is_err());
assert_eq!(store.query("action").last_hours(1).sum(), Some(10));
}