add start entry test (#20)

This commit is contained in:
Dmitry Afanasyev 2023-09-29 15:29:06 +03:00 committed by GitHub
parent 90ec8ccec1
commit 52df4d338f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 83 additions and 29 deletions

View File

@ -3,7 +3,7 @@ from enum import StrEnum
AUDIO_SEGMENT_DURATION = 120 * 1000 AUDIO_SEGMENT_DURATION = 120 * 1000
API_PREFIX = "/api" API_PREFIX = "/api"
CHAT_GPT_BASE_URI = "backend-api/v2/conversation" CHAT_GPT_BASE_URI = "/backend-api/v2/conversation"
class BotStagesEnum(StrEnum): class BotStagesEnum(StrEnum):

View File

@ -37,9 +37,9 @@ async def about_bot(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
if not update.effective_message: if not update.effective_message:
return None return None
await update.effective_message.reply_text( await update.effective_message.reply_text(
"Бот использует бесплатную модель Chat-GPT3.5 для ответов на вопросы. " f"Бот использует бесплатную модель {settings.GPT_MODEL} для ответов на вопросы. "
"Принимает запросы на разных языках. \n\nБот так же умеет переводить голосовые сообщения в текст. " f"Принимает запросы на разных языках.\n\nБот так же умеет переводить русские голосовые сообщения в текст. "
"Просто пришлите голосовуху и получите поток сознания без запятых в виде текста", f"Просто пришлите голосовуху и получите поток сознания в виде текста, но без знаков препинания",
parse_mode="Markdown", parse_mode="Markdown",
) )

View File

@ -15,6 +15,8 @@ TELEGRAM_API_TOKEN="123456789:AABBCCDDEEFFaabbccddeeff-1234567890"
DOMAIN="https://mydomain.com" DOMAIN="https://mydomain.com"
URL_PREFIX="/gpt" URL_PREFIX="/gpt"
GPT_BASE_HOST="http://chat_service:8858"
# set to true to start with webhook. Else bot will start on polling method # set to true to start with webhook. Else bot will start on polling method
START_WITH_WEBHOOK="false" START_WITH_WEBHOOK="false"
@ -24,4 +26,26 @@ WORKERS_COUNT=1
RELOAD="true" RELOAD="true"
DEBUG="true" DEBUG="true"
GPT_MODEL="gpt-3.5-turbo-stream-AItianhuSpace" GPT_MODEL="gpt-3.5-turbo-stream-DeepAi"
# "gpt-3.5-turbo-stream-openai"
# "gpt-3.5-turbo-Aichat"
# "gpt-4-ChatgptAi"
# "gpt-3.5-turbo-weWordle"
# "gpt-3.5-turbo-acytoo"
# "gpt-3.5-turbo-stream-DeepAi"
# "gpt-3.5-turbo-stream-H2o"
# "gpt-3.5-turbo-stream-yqcloud"
# "gpt-OpenAssistant-stream-HuggingChat"
# "gpt-4-turbo-stream-you"
# "gpt-3.5-turbo-AItianhu"
# "gpt-3-stream-binjie"
# "gpt-3.5-turbo-stream-CodeLinkAva"
# "gpt-4-stream-ChatBase"
# "gpt-3.5-turbo-stream-aivvm"
# "gpt-3.5-turbo-16k-stream-Ylokh"
# "gpt-3.5-turbo-stream-Vitalentum"
# "gpt-3.5-turbo-stream-GptGo"
# "gpt-3.5-turbo-stream-AItianhuSpace"
# "gpt-3.5-turbo-stream-Aibn"
# "gpt-3.5-turbo-ChatgptDuo"

View File

@ -12,7 +12,7 @@ from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from constants import BotStagesEnum from constants import BotStagesEnum
from core.bot import BotApplication, BotQueue from core.bot import BotApplication, BotQueue
from main import Application from main import Application
from settings.config import AppSettings from settings.config import AppSettings, settings
from tests.integration.bot.conftest import mocked_ask_question_api from tests.integration.bot.conftest import mocked_ask_question_api
from tests.integration.bot.networking import MockedRequest from tests.integration.bot.networking import MockedRequest
from tests.integration.factories.bot import ( from tests.integration.factories.bot import (
@ -101,6 +101,40 @@ async def test_help_command(
) )
async def test_start_entry(
main_application: Application,
test_settings: AppSettings,
) -> None:
with mock.patch.object(
telegram._bot.Bot, "send_message", return_value=lambda *args, **kwargs: (args, kwargs)
) as mocked_send_message:
bot_update = BotUpdateFactory(message=BotMessageFactory.create_instance(text="/start"))
await main_application.bot_app.application.process_update(
update=Update.de_json(data=bot_update, bot=main_application.bot_app.bot)
)
assert_that(mocked_send_message.call_args.kwargs).is_equal_to(
{
"text": "Выберете команду:",
"chat_id": bot_update["message"]["chat"]["id"],
"reply_markup": InlineKeyboardMarkup(
inline_keyboard=(
(
InlineKeyboardButton(callback_data="about_me", text="Обо мне"),
InlineKeyboardButton(callback_data="website", text="Веб версия"),
),
(
InlineKeyboardButton(callback_data="help", text="Помощь"),
InlineKeyboardButton(callback_data="about_bot", text="О боте"),
),
)
),
},
include=["text", "chat_id", "reply_markup"],
)
async def test_about_me_callback_action( async def test_about_me_callback_action(
main_application: Application, main_application: Application,
test_settings: AppSettings, test_settings: AppSettings,
@ -134,9 +168,9 @@ async def test_about_bot_callback_action(
) )
assert mocked_reply_text.call_args.args == ( assert mocked_reply_text.call_args.args == (
"Бот использует бесплатную модель Chat-GPT3.5 для ответов на вопросы. Принимает запросы на разных языках. " f"Бот использует бесплатную модель {settings.GPT_MODEL} для ответов на вопросы. "
"\n\nБот так же умеет переводить голосовые сообщения в текст. Просто пришлите голосовуху и получите поток " f"Принимает запросы на разных языках.\n\nБот так же умеет переводить русские голосовые сообщения в текст. "
"сознания без запятых в виде текста", f"Просто пришлите голосовуху и получите поток сознания в виде текста, но без знаков препинания",
) )
assert mocked_reply_text.call_args.kwargs == {"parse_mode": "Markdown"} assert mocked_reply_text.call_args.kwargs == {"parse_mode": "Markdown"}
@ -178,3 +212,19 @@ async def test_ask_question_action(
}, },
include=["text", "chat_id"], include=["text", "chat_id"],
) )
async def test_no_update_message(
main_application: Application,
test_settings: AppSettings,
) -> None:
with mock.patch.object(
telegram._bot.Bot, "send_message", return_value=lambda *args, **kwargs: (args, kwargs)
) as mocked_send_message:
bot_update = BotUpdateFactory(message=None)
await main_application.bot_app.application.process_update(
update=Update.de_json(data=bot_update, bot=main_application.bot_app.bot)
)
assert mocked_send_message.called is False

View File

@ -63,23 +63,3 @@ COPY --from=compile-image /app/.venv /app/.venv
USER ${USER} USER ${USER}
ENV PATH="/app/.venv/bin:$PATH" ENV PATH="/app/.venv/bin:$PATH"
##===================== chat-service ================================
#FROM compile-image as chat-service
#
#RUN printf "================ Start build chat-service. with USER: ${USER} ==============="
#
#WORKDIR /app/
#
## Copying bot service
#COPY --chown=${USER}:${USER} ../chat_gpt_microservice /app/
#
#COPY --from=compile-image /app/.venv /app/.venv
#ENV PATH="/app/.venv/bin:$PATH"
#
#USER ${USER}
#
#RUN chmod -R 777 translations
#
#CMD ["python3", "./run.py"]