91 lines
3.2 KiB
Python
91 lines
3.2 KiB
Python
# -*- 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 |