From e3cd75bb56e75aba5fe9c32c68d0c5d9837d8a65 Mon Sep 17 00:00:00 2001 From: kitos Date: Mon, 6 Jul 2026 10:56:41 +0200 Subject: [PATCH] feat(tests): retarget submit-red/submit-blue through review gates, add review decisions --- backend/tests/test_t106_workflow_service.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/backend/tests/test_t106_workflow_service.py b/backend/tests/test_t106_workflow_service.py index 62ebdbe..862dbf0 100644 --- a/backend/tests/test_t106_workflow_service.py +++ b/backend/tests/test_t106_workflow_service.py @@ -13,6 +13,7 @@ from unittest.mock import MagicMock, patch from app.domain.exceptions import InvalidTransitionError from app.models.enums import TestState from app.services.test_workflow_service import ( + approve_red_review, can_transition, reopen_test, start_execution, @@ -108,18 +109,20 @@ def test_draft_to_validated_fails(mock_log): # --------------------------------------------------------------------------- +@patch("app.services.test_workflow_service.select_reviewer") @patch("app.services.test_workflow_service.log_action") -def test_red_executing_to_blue_evaluating(mock_log): +def test_red_executing_to_blue_evaluating(mock_log, mock_select_reviewer): test = _make_test(TestState.red_executing) user = _make_user("red_tech") db = _make_db() + mock_select_reviewer.return_value = _make_user("red_lead") result = submit_red_evidence(db, test, user) - assert result.state == TestState.blue_evaluating + assert result.state == TestState.red_review db.flush.assert_called() mock_log.assert_called() - print(" [PASS] Transition red_executing -> blue_evaluating works") + print(" [PASS] Transition red_executing -> red_review works") # --------------------------------------------------------------------------- @@ -193,11 +196,13 @@ def test_reopen_clears_validation(mock_log): # --------------------------------------------------------------------------- +@patch("app.services.test_workflow_service.select_reviewer") @patch("app.services.test_workflow_service.log_action") -def test_transitions_generate_audit_logs(mock_log): +def test_transitions_generate_audit_logs(mock_log, mock_select_reviewer): test = _make_test(TestState.draft) user = _make_user("red_tech") db = _make_db() + mock_select_reviewer.return_value = _make_user("red_lead") start_execution(db, test, user) assert mock_log.call_count >= 1 @@ -207,8 +212,12 @@ def test_transitions_generate_audit_logs(mock_log): assert mock_log.call_count > c1 c2 = mock_log.call_count - submit_blue_evidence(db, test, user) + approve_red_review(db, test, _make_user("red_lead")) assert mock_log.call_count > c2 + c3 = mock_log.call_count + + submit_blue_evidence(db, test, user) + assert mock_log.call_count > c3 print(" [PASS] Each transition generates an audit log")