|
@@ -2,6 +2,7 @@ use tokio::sync::{mpsc, oneshot};
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
#[derive(Debug)]
|
|
|
pub enum TgManagerCommand {
|
|
pub enum TgManagerCommand {
|
|
|
|
|
+ #[allow(dead_code)]
|
|
|
Get {
|
|
Get {
|
|
|
user_id: String,
|
|
user_id: String,
|
|
|
reply_to: oneshot::Sender<String>,
|
|
reply_to: oneshot::Sender<String>,
|
|
@@ -24,3 +25,33 @@ pub async fn user_manager(rx: &mut mpsc::Receiver<TgManagerCommand>) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+#[cfg(test)]
|
|
|
|
|
+mod tgusertest {
|
|
|
|
|
+ use super::*;
|
|
|
|
|
+ use tokio::sync::oneshot;
|
|
|
|
|
+
|
|
|
|
|
+ #[tokio::test]
|
|
|
|
|
+ async fn manager() {
|
|
|
|
|
+ let (tx, mut rx) = mpsc::channel(32);
|
|
|
|
|
+ let (response_tx, response_rx) = oneshot::channel();
|
|
|
|
|
+
|
|
|
|
|
+ tokio::spawn(async move {
|
|
|
|
|
+ user_manager(&mut rx).await;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ tx.send(TgManagerCommand::Get {
|
|
|
|
|
+ user_id: "0".to_string(),
|
|
|
|
|
+ reply_to: response_tx,
|
|
|
|
|
+ })
|
|
|
|
|
+ .await
|
|
|
|
|
+ .unwrap(); // Handle potential error properly
|
|
|
|
|
+
|
|
|
|
|
+ // Now, await the response from the user_manager function
|
|
|
|
|
+ if let Ok(response) = response_rx.await {
|
|
|
|
|
+ println!("Received response: {}", response);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ println!("The sender dropped without sending a response");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|