first integration test
This commit is contained in:
17
src/main.rs
17
src/main.rs
@@ -189,17 +189,26 @@ async fn unknown_message_handler(msg: Message) -> BotResult {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
|
use mockall::predicate::{always, function};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::message_sender::MockMessageSender;
|
use crate::message_sender::MockMessageSender;
|
||||||
use crate::test_utils::create_deps;
|
use crate::test_utils::{create_deps, create_tele_update};
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_main_handler() {
|
async fn test_main_handler() {
|
||||||
let mut bot = MockMessageSender::new();
|
let mut message_sender = MockMessageSender::new();
|
||||||
bot.expect_send_html_message()
|
message_sender
|
||||||
|
.expect_send_html_message()
|
||||||
.times(1)
|
.times(1)
|
||||||
|
.with(
|
||||||
|
function(|text: &String| text.contains("Available Commands:")),
|
||||||
|
always(),
|
||||||
|
)
|
||||||
.returning(|_, _| Ok(()));
|
.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();
|
let handler = main_handler();
|
||||||
dptree::type_check(handler.sig(), &deps, &[]);
|
dptree::type_check(handler.sig(), &deps, &[]);
|
||||||
|
|
||||||
|
|||||||
@@ -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 user = create_tele_user("sender");
|
||||||
let chat = create_tele_private_chat(&user);
|
let chat = create_tele_private_chat(&user);
|
||||||
Update {
|
Update {
|
||||||
@@ -150,7 +150,7 @@ pub fn create_tele_update() -> Update {
|
|||||||
sender_business_bot: None,
|
sender_business_bot: None,
|
||||||
kind: MessageKind::Common(MessageCommon {
|
kind: MessageKind::Common(MessageCommon {
|
||||||
media_kind: MediaKind::Text(MediaText {
|
media_kind: MediaKind::Text(MediaText {
|
||||||
text: "test".to_string(),
|
text: message_text.to_string(),
|
||||||
entities: vec![],
|
entities: vec![],
|
||||||
link_preview_options: None,
|
link_preview_options: None,
|
||||||
}),
|
}),
|
||||||
@@ -175,7 +175,6 @@ pub fn create_tele_update() -> Update {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_deps(mock_bot: MockMessageSender) -> DependencyMap {
|
pub async fn create_deps(mock_bot: MockMessageSender) -> DependencyMap {
|
||||||
let update = create_tele_update();
|
|
||||||
let pool = create_test_pool().await;
|
let pool = create_test_pool().await;
|
||||||
let dialog_storage = SqliteStorage::new(pool.clone(), Json).await.unwrap();
|
let dialog_storage = SqliteStorage::new(pool.clone(), Json).await.unwrap();
|
||||||
let daos = DAOs::new(pool);
|
let daos = DAOs::new(pool);
|
||||||
@@ -189,7 +188,7 @@ pub async fn create_deps(mock_bot: MockMessageSender) -> DependencyMap {
|
|||||||
can_connect_to_business: true,
|
can_connect_to_business: true,
|
||||||
has_main_web_app: true,
|
has_main_web_app: true,
|
||||||
};
|
};
|
||||||
dptree::deps![update, dialog_storage, app, me, daos]
|
dptree::deps![dialog_storage, app, me, daos]
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Reference in New Issue
Block a user