03-oct: superguardado automático

This commit is contained in:
minguezsanzjuanjose
2026-10-03 17:13:39 +02:00
parent f10ce5bef4
commit fdd4ea877a
31 changed files with 2229 additions and 4 deletions

74
tests/test_correo.py Normal file
View File

@@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
"""Tests de `monitor_estado.fuentes.correo` — ventana 24h y solo lectura (RF-2, RF-25)."""
import monitor_estado.fuentes.correo as correo
class _Req:
def __init__(self, resp):
self._resp = resp
def execute(self):
return self._resp
class _Messages:
def __init__(self):
self.queries = []
self.gets = []
self.modificados = []
def list(self, userId, q, maxResults):
self.queries.append(q)
return _Req({"messages": [{"id": "m1"}, {"id": "m2"}]})
def get(self, userId, id, format, metadataHeaders):
self.gets.append(id)
return _Req({
"snippet": f"resumen de {id}",
"payload": {"headers": [
{"name": "Subject", "value": f"Asunto {id}"},
{"name": "From", "value": "Remitente <r@b.com>"},
{"name": "Date", "value": "Sat, 3 Oct 2026 09:00:00 +0200"},
]},
})
def modify(self, **kwargs): # no debe llamarse nunca (RF-25)
self.modificados.append(kwargs)
return _Req({})
class _Users:
def __init__(self):
self._m = _Messages()
def messages(self):
return self._m
class FakeGmail:
def __init__(self):
self._u = _Users()
def users(self):
return self._u
def test_correo_ventana_24h():
gmail = FakeGmail()
correos = correo.recoger_recientes(gmail, horas=24)
assert len(correos) == 2
assert correos[0]["id"] == "m1"
assert correos[0]["asunto"] == "Asunto m1"
assert "newer_than:1d" in gmail.users().messages().queries[0]
def test_correo_no_modifica_estado():
gmail = FakeGmail()
correo.recoger_recientes(gmail, horas=24)
assert gmail.users().messages().modificados == [] # no marca leido (RF-25)
def test_render_correo():
txt = correo.render_correo({"fecha": "Sat, 3 Oct 2026 09:00:00 +0200", "de": "a@b.com", "asunto": "Hola", "snippet": "cuerpo"})
assert "a@b.com" in txt and "Hola" in txt