/
tsps
/
case_loader
Обзор
Документация
Войти
/
tsps
/
case_loader
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
tests/test_data_fetcher.py
71 строка
3 KB
Василий Петров
Добавлена дата в документ
21 фев 2026, 16:22
21 фев 2026, 16:22
6b68581
Код
Авторство
О чём код?
from unittest.mock import Mock, patch from app.services.data_fetcher import DataFetcher def test_data_fetcher_processes_documents_with_db_storage(): """Модульный тест: DataFetcher корректно оркестрирует обработку документов при STORAGE_TYPE=db""" # Мокаем зависимости mock_parser = Mock() mock_parser.parse.return_value = "Текст документа Дело № А47-12345/2025" mock_scraper = Mock() mock_scraper.scrape_documents.return_value = [ {"case_number": "А47-12345/2025", "date": "2026-01-10", "pdf_bytes": b"pdf1"}, {"case_number": "А47-67890/2025", "date": "2026-01-11", "pdf_bytes": b"pdf2"}, ] mock_db_storage = Mock() mock_db_storage.save_document.return_value = 1001 # фиктивный document.id # Создаём фетчер с моковым соединением (не используется при моках) mock_conn = Mock() fetcher = DataFetcher(parser=mock_parser, db_conn=mock_conn) # Сохраняем search_params для доступа в _process_single_document fetcher.search_params = { "judge_id": 42, "court_id": 7, "document_type_id": 3, "date_from": "2026-01-01", "date_to": "2026-01-31" } # Подменяем зависимости через патч with patch.object(fetcher, "_get_judge_display_name", return_value="Тестовый С. Т."), \ patch.object(fetcher, "_get_court_name", return_value="Тестовый суд"), \ patch.object(fetcher, "_get_document_type_name", return_value="Решение"), \ patch("app.services.data_fetcher.CaselookScraper", return_value=mock_scraper), \ patch("app.services.data_fetcher.DbStorage", return_value=mock_db_storage): # Вызываем тестируемый метод result = fetcher.fetch_cases(fetcher.search_params) # Проверяем вызовы скрапера mock_scraper.scrape_documents.assert_called_once() call_kwargs = mock_scraper.scrape_documents.call_args.kwargs assert call_kwargs["judge_name"] == "Тестовый С. Т." # имя из мока _get_judge_display_name assert call_kwargs["court_name"] == "Тестовый суд" assert call_kwargs["document_type_name"] == "Решение" assert call_kwargs["date_from"] == "2026-01-01" assert call_kwargs["date_to"] == "2026-01-31" # Проверяем вызовы сохранения (2 документа) assert mock_db_storage.save_document.call_count == 2 # Проверяем аргументы первого вызова call1 = mock_db_storage.save_document.call_args_list[0] assert call1.kwargs["case_number"] == "А47-12345/2025" assert call1.kwargs["title"] == "Решение №А47-12345/2025 от 2026-01-10" assert call1.kwargs["date"] == "2026-01-10" assert call1.kwargs["pdf_content"] == b"pdf1" assert call1.kwargs["parsed_text"] == "Текст документа Дело № А47-12345/2025" assert call1.kwargs["judge_id"] == 42 assert call1.kwargs["court_id"] == 7 assert call1.kwargs["document_type_id"] == 3 # Проверяем результат assert result == { "total_documents_found": 2, "successfully_saved": 2 }