Files

63 lines
1.8 KiB
Python

from __future__ import annotations
from bot_descarga.models.resultado import RunSummary
from bot_descarga.core.download_service import DownloadService
def test_download_service_accepts_should_cancel(monkeypatch):
"""Verifica que should_cancel se honra antes de procesar radicados."""
calls = {"cancel_checks": 0}
def fake_read(_self, _path):
from bot_descarga.models.radicado import RadicadoRecord
return [
RadicadoRecord("1", "NIT1"),
RadicadoRecord("2", "NIT1"),
]
class FakeBrowser:
def start(self, *a, **k):
return object(), object()
def is_alive(self):
return True
def close(self):
pass
def reconnect(self, *a, **k):
return object(), object()
monkeypatch.setattr(
"bot_descarga.core.download_service.ExcelReader.read",
fake_read,
)
monkeypatch.setattr(
"bot_descarga.core.download_service.BrowserManager",
lambda settings=None: FakeBrowser(),
)
monkeypatch.setattr(
"bot_descarga.core.download_service.ImagingClient",
lambda *a, **k: object(),
)
monkeypatch.setattr(
"bot_descarga.core.download_service.JsonlLogger",
lambda *a, **k: type("L", (), {"path": "x", "write": lambda *x: None, "close": lambda *x: None})(),
)
def should_cancel():
calls["cancel_checks"] += 1
return True
svc = DownloadService(
ruta_excel="dummy.xlsx",
carpeta_descarga=".",
should_cancel=should_cancel,
event_callback=lambda e: None,
)
# Evitar crear carpeta real problemática: FileManager.mkdirs ok
summary = svc.run()
assert isinstance(summary, RunSummary)
assert summary.cancelled is True
assert calls["cancel_checks"] >= 1