93 lines
3.5 KiB
Python
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()
|