use std::time::Duration;
use crate::channels::telegram::governor::test_support;
use crate::channels::telegram::rate_limit::{
reaction_ack_permitted, record_global_429, reset_global_cooldown,
};
#[tokio::test]
async fn ack_suppressed_while_global_cooldown_active() {
let _guard = test_support::registry_guard().await;
let _cooldown = crate::tests::telegram_cooldown_lock::guard().await;
test_support::reset(0);
reset_global_cooldown();
assert!(reaction_ack_permitted(), "clear state must permit acks");
record_global_429(Duration::from_secs(5));
assert!(
!reaction_ack_permitted(),
"ack reactions must be suppressed while the global 429 cooldown is active"
);
reset_global_cooldown();
}
#[tokio::test]
async fn ack_permitted_again_after_cooldown_expires() {
let _guard = test_support::registry_guard().await;
let _cooldown = crate::tests::telegram_cooldown_lock::guard().await;
test_support::reset(0);
reset_global_cooldown();
record_global_429(Duration::from_secs(1));
assert!(!reaction_ack_permitted());
test_support::advance(3000);
assert!(
reaction_ack_permitted(),
"acks must resume once the cooldown deadline passes"
);
reset_global_cooldown();
}
#[tokio::test]
async fn ack_gate_tracks_reset() {
let _guard = test_support::registry_guard().await;
let _cooldown = crate::tests::telegram_cooldown_lock::guard().await;
test_support::reset(0);
reset_global_cooldown();
record_global_429(Duration::from_secs(5));
assert!(!reaction_ack_permitted());
reset_global_cooldown();
assert!(
reaction_ack_permitted(),
"resetting the cooldown must immediately re-permit acks"
);
}