Files
ai-exchange/tests/unit/test_archive_long_range_projection.py
T

93 lines
3.5 KiB
Python

import unittest
from src.services.operator.archive_long_range_projection import (
build_digest_archive_baseline_summary,
build_digest_archive_long_range_summary,
build_workflow_archive_baseline_summary,
build_workflow_archive_long_range_summary,
)
class ArchiveLongRangeProjectionTests(unittest.TestCase):
def test_digest_long_range_and_baseline_summary(self) -> None:
items = [
{
"snapshot_id": 5,
"created_ts": "2026-05-14T09:00:00+00:00",
"top_summary": "Latest digest",
"high_value_reminder_count": 2,
},
{
"snapshot_id": 4,
"created_ts": "2026-05-10T09:00:00+00:00",
"top_summary": "Weekly digest",
"high_value_reminder_count": 1,
},
{
"snapshot_id": 1,
"created_ts": "2026-04-20T09:00:00+00:00",
"top_summary": "Older digest",
"high_value_reminder_count": 0,
},
]
trend = build_digest_archive_long_range_summary(items)
baseline = build_digest_archive_baseline_summary(items)
self.assertEqual(trend["status"], "active")
self.assertEqual(trend["recent_7d_count"], 2)
self.assertEqual(trend["recent_30d_count"], 3)
self.assertGreaterEqual(trend["covered_day_span"], 20)
self.assertTrue(trend["next_review_prompt"])
self.assertEqual(baseline["status"], "active")
self.assertEqual(baseline["latest_snapshot_id"], 5)
self.assertEqual(baseline["baseline_snapshot_id"], 1)
self.assertTrue(baseline["compare_ready"])
def test_workflow_long_range_and_baseline_summary(self) -> None:
items = [
{
"snapshot_id": 9,
"created_ts": "2026-05-14T09:00:00+00:00",
"current_session": "LONDON",
"next_phase": "intraday",
"ready_for_handoff_count": 2,
},
{
"snapshot_id": 8,
"created_ts": "2026-05-08T09:00:00+00:00",
"current_session": "NY_AM",
"next_phase": "post_trade",
"ready_for_handoff_count": 1,
},
{
"snapshot_id": 3,
"created_ts": "2026-04-18T09:00:00+00:00",
"current_session": "ASIA_PM",
"next_phase": "pre_market",
"ready_for_handoff_count": 0,
},
]
trend = build_workflow_archive_long_range_summary(items)
baseline = build_workflow_archive_baseline_summary(items)
self.assertEqual(trend["status"], "active")
self.assertEqual(trend["recent_7d_count"], 2)
self.assertEqual(trend["recent_30d_count"], 3)
self.assertEqual(trend["distinct_session_count"], 3)
self.assertEqual(baseline["status"], "active")
self.assertEqual(baseline["latest_snapshot_id"], 9)
self.assertEqual(baseline["baseline_snapshot_id"], 3)
self.assertTrue(baseline["suggested_compare_prompt"])
def test_empty_items_return_idle(self) -> None:
self.assertEqual(build_digest_archive_long_range_summary([])["status"], "idle")
self.assertEqual(build_digest_archive_baseline_summary([])["status"], "idle")
self.assertEqual(build_workflow_archive_long_range_summary([])["status"], "idle")
self.assertEqual(build_workflow_archive_baseline_summary([])["status"], "idle")
if __name__ == "__main__":
unittest.main()