use crate::channels::telegram::TelegramState;
use std::sync::Arc;
use tokio_util::sync::CancellationToken;
use uuid::Uuid;
#[tokio::test]
async fn storing_a_new_token_does_not_cancel_the_in_flight_one() {
let state = Arc::new(TelegramState::new());
let session = Uuid::new_v4();
let first = CancellationToken::new();
state.store_cancel_token(session, first.clone()).await;
let second = CancellationToken::new();
state.store_cancel_token(session, second.clone()).await;
assert!(
!first.is_cancelled(),
"storing a new token cancelled the in-flight turn — the #652 drop"
);
assert!(!second.is_cancelled());
}
#[tokio::test]
async fn explicit_cancel_session_still_cancels() {
let state = Arc::new(TelegramState::new());
let session = Uuid::new_v4();
let token = CancellationToken::new();
state.store_cancel_token(session, token.clone()).await;
assert!(state.cancel_session(session).await);
assert!(token.is_cancelled());
}