# -*- 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