From f380e9046bc969dc50b34eef5f4b0ac3260ff3c9 Mon Sep 17 00:00:00 2001 From: Markov Andrey Date: Tue, 30 Jun 2026 09:22:37 +0000 Subject: [PATCH] Add new file --- core/tests/test_expand_query.py | 91 +++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 core/tests/test_expand_query.py diff --git a/core/tests/test_expand_query.py b/core/tests/test_expand_query.py new file mode 100644 index 0000000..7beba3c --- /dev/null +++ b/core/tests/test_expand_query.py @@ -0,0 +1,91 @@ +# -*- 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 \ No newline at end of file