feat(tests): retarget submit-red/submit-blue through review gates, add review decisions
This commit is contained in:
@@ -13,6 +13,7 @@ from unittest.mock import MagicMock, patch
|
|||||||
from app.domain.exceptions import InvalidTransitionError
|
from app.domain.exceptions import InvalidTransitionError
|
||||||
from app.models.enums import TestState
|
from app.models.enums import TestState
|
||||||
from app.services.test_workflow_service import (
|
from app.services.test_workflow_service import (
|
||||||
|
approve_red_review,
|
||||||
can_transition,
|
can_transition,
|
||||||
reopen_test,
|
reopen_test,
|
||||||
start_execution,
|
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")
|
@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)
|
test = _make_test(TestState.red_executing)
|
||||||
user = _make_user("red_tech")
|
user = _make_user("red_tech")
|
||||||
db = _make_db()
|
db = _make_db()
|
||||||
|
mock_select_reviewer.return_value = _make_user("red_lead")
|
||||||
|
|
||||||
result = submit_red_evidence(db, test, user)
|
result = submit_red_evidence(db, test, user)
|
||||||
|
|
||||||
assert result.state == TestState.blue_evaluating
|
assert result.state == TestState.red_review
|
||||||
db.flush.assert_called()
|
db.flush.assert_called()
|
||||||
mock_log.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")
|
@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)
|
test = _make_test(TestState.draft)
|
||||||
user = _make_user("red_tech")
|
user = _make_user("red_tech")
|
||||||
db = _make_db()
|
db = _make_db()
|
||||||
|
mock_select_reviewer.return_value = _make_user("red_lead")
|
||||||
|
|
||||||
start_execution(db, test, user)
|
start_execution(db, test, user)
|
||||||
assert mock_log.call_count >= 1
|
assert mock_log.call_count >= 1
|
||||||
@@ -207,8 +212,12 @@ def test_transitions_generate_audit_logs(mock_log):
|
|||||||
assert mock_log.call_count > c1
|
assert mock_log.call_count > c1
|
||||||
c2 = mock_log.call_count
|
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
|
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")
|
print(" [PASS] Each transition generates an audit log")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user