03-oct: superguardado automático
This commit is contained in:
74
tests/test_correo.py
Normal file
74
tests/test_correo.py
Normal 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
|
||||
Reference in New Issue
Block a user