56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
import unittest
|
|
|
|
from app.services.sync_record_service import _collect_recent_domain_events
|
|
|
|
|
|
class SyncRecordServiceTests(unittest.TestCase):
|
|
def test_collect_recent_domain_events_filters_and_keeps_latest_slice(self) -> None:
|
|
active_job = {
|
|
"current_cycle_events": [
|
|
{
|
|
"node_code": "mainland-worker-01",
|
|
"event_type": "job_dispatch_sent",
|
|
"level": "info",
|
|
"message": "dispatch",
|
|
"created_at": "2026-04-19 01:00:05",
|
|
"payload": {"cycle_token": "cycle-1"},
|
|
},
|
|
{
|
|
"node_code": "mainland-worker-01",
|
|
"event_type": "domain_completed",
|
|
"level": "info",
|
|
"message": "完成 a.com",
|
|
"created_at": "2026-04-19 01:00:04",
|
|
"payload": {"domain": "a.com", "cycle_token": "cycle-1"},
|
|
},
|
|
{
|
|
"node_code": "mainland-worker-01",
|
|
"event_type": "domain_started",
|
|
"level": "info",
|
|
"message": "开始 b.com",
|
|
"created_at": "2026-04-19 01:00:03",
|
|
"payload": {"domain": "b.com", "cycle_token": "cycle-1"},
|
|
},
|
|
{
|
|
"node_code": "mainland-worker-01",
|
|
"event_type": "domain_failed",
|
|
"level": "warning",
|
|
"message": "失败 c.com",
|
|
"created_at": "2026-04-19 01:00:02",
|
|
"payload": {"domain": "c.com", "cycle_token": "cycle-1"},
|
|
},
|
|
]
|
|
}
|
|
|
|
events = _collect_recent_domain_events(active_job, limit=2)
|
|
|
|
self.assertEqual(2, len(events))
|
|
self.assertEqual("domain_started", events[0]["event_type"])
|
|
self.assertEqual("b.com", events[0]["payload"]["domain"])
|
|
self.assertEqual("domain_completed", events[1]["event_type"])
|
|
self.assertEqual("a.com", events[1]["payload"]["domain"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|