63 lines
1.8 KiB
Python
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
|