use tokio::sync::mpsc;
use crate::state::AppState;
pub fn send_query(app: &mut AppState, query_tx: &mpsc::UnboundedSender<crate::state::QueryInput>) {
let id = app.next_query_id;
app.next_query_id += 1;
app.latest_query_id = id;
let _ = query_tx.send(crate::state::QueryInput {
id,
text: app.input.clone(),
fuzzy: app.fuzzy_search_enabled,
});
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn send_query_increments_and_sends() {
let mut app = AppState {
input: "hello".into(),
..Default::default()
};
let (tx, mut rx) = mpsc::unbounded_channel();
send_query(&mut app, &tx);
assert_eq!(app.latest_query_id, 1);
let q = tokio::time::timeout(std::time::Duration::from_millis(50), rx.recv())
.await
.ok()
.flatten()
.expect("query sent");
assert_eq!(q.id, app.latest_query_id);
assert_eq!(q.text, "hello");
assert!(!q.fuzzy); }
}