DFiP_Budget_planing/api/tests/unit/test_vsp_status.py
2026-11-12 11:47:52 +04:00

59 lines
1.9 KiB
Python

import pytest
from src.services.vsp_service import vsp_status_to_is_active
@pytest.mark.parametrize("status, expected", [("active", True), ("closed", False), ("all", None)])
def test_vsp_status_to_is_active(status, expected):
assert vsp_status_to_is_active(status) is expected
# --- выгрузка и dropdown (AURORA-1883, задача 2) ---
from datetime import date
from unittest.mock import AsyncMock, MagicMock
from src.db.models import UserRoleEnum
from src.services.vsp_service import VSPService
def _admin():
user = MagicMock()
user.id = 1
user.role_id = UserRoleEnum.ADMIN
return user
def _dropdown_service() -> VSPService:
service = VSPService.__new__(VSPService)
service.vsp_repo = MagicMock()
service.vsp_repo.get_list = AsyncMock(return_value=(0, []))
service.form_repo = MagicMock()
service.form_repo.get = AsyncMock(return_value=None)
service._get_scoped_ssp_ids = AsyncMock(return_value=None)
service._sync_closed_records = AsyncMock()
return service
async def test_get_dropdown_include_inactive_passes_none():
service = _dropdown_service()
await service.get_dropdown(user=_admin(), ssp_id=2, include_inactive=True, with_count=True)
assert service.vsp_repo.get_list.await_args.kwargs["is_active"] is None
async def test_get_dropdown_default_active_only():
service = _dropdown_service()
await service.get_dropdown(user=_admin(), ssp_id=2, with_count=True)
assert service.vsp_repo.get_list.await_args.kwargs["is_active"] is True
async def test_export_xlsx_status_closed():
service = VSPService.__new__(VSPService)
service.get_list = AsyncMock(return_value=[])
await service.export_xlsx(user=_admin(), status="closed", close_date_start=date(2021, 1, 1))
kwargs = service.get_list.await_args.kwargs
assert kwargs["is_active"] is False
assert kwargs["close_date_start"] == date(2021, 1, 1)
assert kwargs["close_date_end"] is None