"""Unit: dashboard's new-proposal highlight window.

The curses rendering itself is exercised manually; this isolates
the pure decision `is the proposal still in its post-arrival
highlight window?`"""

import unittest

from claude_bottle.cli import dashboard


class TestIsRecent(unittest.TestCase):
    def test_just_seen_is_recent(self):
        self.assertTrue(dashboard._is_recent("p1", {"p1": 100.0}, now=100.5))

    def test_seen_within_window(self):
        # Default window is 5s.
        self.assertTrue(
            dashboard._is_recent("p1", {"p1": 100.0}, now=104.9),
        )

    def test_seen_past_window_is_not_recent(self):
        self.assertFalse(
            dashboard._is_recent("p1", {"p1": 100.0}, now=106.0),
        )

    def test_unknown_proposal_is_not_recent(self):
        self.assertFalse(
            dashboard._is_recent("p2", {"p1": 100.0}, now=100.5),
        )

    def test_none_args_safe_default(self):
        self.assertFalse(dashboard._is_recent("p1", None, None))
        self.assertFalse(dashboard._is_recent("p1", {"p1": 100.0}, None))
        self.assertFalse(dashboard._is_recent("p1", None, 100.5))


if __name__ == "__main__":
    unittest.main()
