fix: newest lease marker wins so release ends prior claims
find_active_reviewer_lease walked past terminal markers and re-armed older claimed leases after gitea_release_reviewer_pr_lease. Treat the newest marker as authoritative (append-only ledger). Closes #577
This commit is contained in:
@@ -98,6 +98,45 @@ class TestReviewerLeaseFreshness(unittest.TestCase):
|
||||
)
|
||||
|
||||
|
||||
class TestReviewerLeaseNewestWins(unittest.TestCase):
|
||||
"""#577: terminal release must supersede older claimed markers."""
|
||||
|
||||
def test_released_after_claimed_has_no_active_lease(self):
|
||||
claim = _lease_comment(516, "session-a", phase="claimed")
|
||||
claim["id"] = 1
|
||||
release = _lease_comment(516, "session-a", phase="released")
|
||||
release["id"] = 2
|
||||
active = leases.find_active_reviewer_lease(
|
||||
[claim, release], pr_number=516
|
||||
)
|
||||
self.assertIsNone(active)
|
||||
|
||||
def test_new_claim_after_release_is_active(self):
|
||||
claim = _lease_comment(516, "session-a", phase="claimed")
|
||||
claim["id"] = 1
|
||||
release = _lease_comment(516, "session-a", phase="released")
|
||||
release["id"] = 2
|
||||
reclaim = _lease_comment(516, "session-b", phase="claimed")
|
||||
reclaim["id"] = 3
|
||||
active = leases.find_active_reviewer_lease(
|
||||
[claim, release, reclaim], pr_number=516
|
||||
)
|
||||
self.assertIsNotNone(active)
|
||||
self.assertEqual(active.get("session_id"), "session-b")
|
||||
self.assertEqual(active.get("phase"), "claimed")
|
||||
self.assertEqual(active.get("comment_id"), 3)
|
||||
|
||||
def test_done_after_claimed_has_no_active_lease(self):
|
||||
claim = _lease_comment(516, "session-a", phase="claimed")
|
||||
claim["id"] = 10
|
||||
done = _lease_comment(516, "session-a", phase="done")
|
||||
done["id"] = 11
|
||||
active = leases.find_active_reviewer_lease(
|
||||
[claim, done], pr_number=516
|
||||
)
|
||||
self.assertIsNone(active)
|
||||
|
||||
|
||||
class TestReviewerLeaseMutationGate(unittest.TestCase):
|
||||
def setUp(self):
|
||||
leases.clear_session_lease()
|
||||
|
||||
Reference in New Issue
Block a user