|
|
@@ -885,6 +885,23 @@ def attach_pairs(rows, folded):
|
|
|
return calls_by_id, rides_by_id
|
|
|
|
|
|
|
|
|
+# --- The state badge: only a working (or assigned) task streams
|
|
|
+# live; every other status names itself on the pill, still. ---
|
|
|
+
|
|
|
+LIVE_STATUSES = {"working", "assigned"}
|
|
|
+BADGE_LABELS = {"suspended": "parked", "review_requested": "review requested"}
|
|
|
+
|
|
|
+
|
|
|
+def badge_line(status, stream_state="live"):
|
|
|
+ """PORT of updateBadge -> (class, label)."""
|
|
|
+ if status in LIVE_STATUSES:
|
|
|
+ if stream_state == "retry":
|
|
|
+ return "log-live retry", "reconnecting..."
|
|
|
+ return "log-live", "live"
|
|
|
+ label = BADGE_LABELS.get(status, status) or "idle"
|
|
|
+ return "log-live still badge badge-" + status, label
|
|
|
+
|
|
|
+
|
|
|
DIFF_CONTEXT = 2
|
|
|
DIFF_MAX_LINES = 400
|
|
|
|
|
|
@@ -1452,6 +1469,38 @@ class ResultAttachmentTests(unittest.TestCase):
|
|
|
self.assertEqual((calls_by_id, rides_by_id), ({}, {}))
|
|
|
|
|
|
|
|
|
+class BadgeLineTests(unittest.TestCase):
|
|
|
+ """The badge reflects the TASK first: live only while a working
|
|
|
+ (or assigned) task streams; every other status names itself."""
|
|
|
+
|
|
|
+ def test_working_is_live(self):
|
|
|
+ self.assertEqual(badge_line("working"), ("log-live", "live"))
|
|
|
+
|
|
|
+ def test_assigned_is_live(self):
|
|
|
+ self.assertEqual(badge_line("assigned"), ("log-live", "live"))
|
|
|
+
|
|
|
+ def test_retry_only_rides_a_live_task(self):
|
|
|
+ self.assertEqual(badge_line("working", "retry"),
|
|
|
+ ("log-live retry", "reconnecting..."))
|
|
|
+ self.assertEqual(badge_line("failed", "retry")[1], "failed")
|
|
|
+
|
|
|
+ def test_suspended_shows_as_parked(self):
|
|
|
+ cls, label = badge_line("suspended")
|
|
|
+ self.assertEqual(label, "parked")
|
|
|
+ self.assertIn("still badge badge-suspended", cls)
|
|
|
+
|
|
|
+ def test_review_requested_uses_the_task_page_word(self):
|
|
|
+ self.assertEqual(badge_line("review_requested")[1],
|
|
|
+ "review requested")
|
|
|
+
|
|
|
+ def test_terminal_states_name_themselves(self):
|
|
|
+ self.assertEqual(badge_line("done")[1], "done")
|
|
|
+ self.assertEqual(badge_line("failed")[1], "failed")
|
|
|
+
|
|
|
+ def test_unknown_status_falls_back_to_idle(self):
|
|
|
+ self.assertEqual(badge_line("")[1], "idle")
|
|
|
+
|
|
|
+
|
|
|
class ToolResultRenderTests(unittest.TestCase):
|
|
|
|
|
|
def evt(self, payload):
|