Files
fckbot/tests/test_expand_query.py
2026-06-30 10:35:11 +00:00

91 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
Тесты для модуля расширения запроса.
Проверяем, что функция корректно добавляет синонимы и ключевые слова.
"""
import pytest
from core.functions.expand_query import expand_query, _expand_cache
@pytest.mark.asyncio
async def test_expand_success(mock_giga, mock_bot_config, sample_prompt_expand):
"""
Тест: успешное расширение запроса.
"""
mock_giga.chat.return_value = "OEE общая эффективность оборудования"
result = await expand_query(
giga=mock_giga,
query="OEE",
prompt_text=sample_prompt_expand,
bot_config=mock_bot_config
)
assert result == "OEE общая эффективность оборудования"
mock_giga.chat.assert_called_once()
@pytest.mark.asyncio
async def test_expand_no_change(mock_giga, mock_bot_config, sample_prompt_expand):
"""
Тест: если расширенный запрос совпадает с исходным, возвращается исходный.
Предварительно очищаем кэш, чтобы мок отработал корректно.
"""
# Очищаем кэш перед тестом, чтобы предыдущий вызов не влиял
_expand_cache.clear()
mock_giga.chat.return_value = "OEE" # ответ не изменился
result = await expand_query(
giga=mock_giga,
query="OEE",
prompt_text=sample_prompt_expand,
bot_config=mock_bot_config
)
assert result == "OEE"
@pytest.mark.asyncio
async def test_expand_empty_prompt(mock_giga, mock_bot_config):
"""
Тест: если промпт пуст, возвращается исходный запрос без вызова LLM.
"""
result = await expand_query(
giga=mock_giga,
query="О чём документ?",
prompt_text="", # пустой промпт
bot_config=mock_bot_config
)
assert result == "О чём документ?"
mock_giga.chat.assert_not_called()
@pytest.mark.asyncio
async def test_expand_cache(mock_giga, mock_bot_config, sample_prompt_expand):
"""
Тест: проверка кэширования расширения.
"""
# Очищаем кэш перед тестом
_expand_cache.clear()
mock_giga.chat.return_value = "5S сортировка соблюдение порядка"
# Первый вызов
result1 = await expand_query(
giga=mock_giga,
query="5S",
prompt_text=sample_prompt_expand,
bot_config=mock_bot_config
)
assert result1 == "5S сортировка соблюдение порядка"
assert mock_giga.chat.call_count == 1
# Второй вызов из кэша
result2 = await expand_query(
giga=mock_giga,
query="5S",
prompt_text=sample_prompt_expand,
bot_config=mock_bot_config
)
assert result2 == "5S сортировка соблюдение порядка"
assert mock_giga.chat.call_count == 1