From 1c7131d8017f3bea3748e9245e8dd73983c660a8 Mon Sep 17 00:00:00 2001 From: Dylan Knutson Date: Fri, 5 Sep 2025 22:33:03 +0000 Subject: [PATCH] first integration test --- src/main.rs | 17 +++++++++++++---- src/test_utils.rs | 7 +++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 1419058..bce8b10 100644 --- a/src/main.rs +++ b/src/main.rs @@ -189,17 +189,26 @@ async fn unknown_message_handler(msg: Message) -> BotResult { #[cfg(test)] mod tests { + + use mockall::predicate::{always, function}; + use super::*; use crate::message_sender::MockMessageSender; - use crate::test_utils::create_deps; + use crate::test_utils::{create_deps, create_tele_update}; #[tokio::test] async fn test_main_handler() { - let mut bot = MockMessageSender::new(); - bot.expect_send_html_message() + let mut message_sender = MockMessageSender::new(); + message_sender + .expect_send_html_message() .times(1) + .with( + function(|text: &String| text.contains("Available Commands:")), + always(), + ) .returning(|_, _| Ok(())); - let deps = create_deps(bot).await; + let mut deps = create_deps(message_sender).await; + deps.insert(create_tele_update("/help")); let handler = main_handler(); dptree::type_check(handler.sig(), &deps, &[]); diff --git a/src/test_utils.rs b/src/test_utils.rs index 3acffbe..f427ab2 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -133,7 +133,7 @@ pub fn create_tele_private_chat(user: &User) -> Chat { } } -pub fn create_tele_update() -> Update { +pub fn create_tele_update(message_text: &str) -> Update { let user = create_tele_user("sender"); let chat = create_tele_private_chat(&user); Update { @@ -150,7 +150,7 @@ pub fn create_tele_update() -> Update { sender_business_bot: None, kind: MessageKind::Common(MessageCommon { media_kind: MediaKind::Text(MediaText { - text: "test".to_string(), + text: message_text.to_string(), entities: vec![], link_preview_options: None, }), @@ -175,7 +175,6 @@ pub fn create_tele_update() -> Update { } pub async fn create_deps(mock_bot: MockMessageSender) -> DependencyMap { - let update = create_tele_update(); let pool = create_test_pool().await; let dialog_storage = SqliteStorage::new(pool.clone(), Json).await.unwrap(); let daos = DAOs::new(pool); @@ -189,7 +188,7 @@ pub async fn create_deps(mock_bot: MockMessageSender) -> DependencyMap { can_connect_to_business: true, has_main_web_app: true, }; - dptree::deps![update, dialog_storage, app, me, daos] + dptree::deps![dialog_storage, app, me, daos] } #[cfg(test)]