"""Test rejection logic.""" from datetime import datetime from unittest.mock import NonCallableMagicMock, patch from product_review.logic import rejection as rejection_logic from tests.utils.db_utils import ( create_test_approval, create_test_rejection, create_test_review_queue_item, create_test_unsubmit ) @patch("product_review.logic.rejection.ows_product_digital") @patch("product_review.logic.rejection.sfn") @patch("product_review.logic.rejection.review_queue_model") @patch("product_review.logic.rejection.get_review_queue_item_for_update") def test_reject_via_workflow(mock_get_item, mock_model, mock_sfn, mock_ows): """Test reject via workflow.""" mock_item = NonCallableMagicMock(review_queue_id=1, product_id=2) mock_get_item.return_value = mock_item mock_model.STATUS = NonCallableMagicMock(APPLYING="applying") mock_ows.validate_product.return_value = { "errors": [], "warnings": [], "tracks": {}, "is_valid": True, } rejection_logic.reject_via_workflow(1, "abc", None, [], False) mock_model.change_status.assert_called_once_with(mock_item, "applying") mock_sfn.create_complete_review_sfn_execution.assert_called_once_with( mock_item, "reject", "abc", None, False ) def test_get_rejection(): """Test get rejection notes for workstation.""" mock_item = create_test_review_queue_item( **{"review_queue_id": 1, "product_id": 1, "status": "complete"} ) mock_rejection = create_test_rejection( **{ "review_queue_id": mock_item.review_queue_id, "user_id": "bar", "created_datetime": datetime(2023, 1, 21, 13, 34, 5, 80), "note": "foobar", } ) expected_return_value = { "items": [ { "rejection_id": mock_rejection.rejection_id, "table_name": "releases", "field_name": "general_comments", "comments": mock_rejection.note, "corrected": "N", "key_id": 0 } ] } results = rejection_logic.get_rejection(1) assert results.message == expected_return_value assert results.status == 200 def test_get_rejection_after_unsubmit(): """Test get rejection notes for workstation.""" mock_item_rejection = create_test_review_queue_item( **{"review_queue_id": 1, "product_id": 1, "status": "complete"} ) mock_rejection = create_test_rejection( **{ "review_queue_id": mock_item_rejection.review_queue_id, "user_id": "bar", "created_datetime": datetime(2023, 1, 21, 13, 34, 5, 80), "note": "foobar" } ) mock_item_unsubmit = create_test_review_queue_item( **{"review_queue_id": 2, "product_id": 1, "status": "complete"} ) create_test_unsubmit( review_queue_id=mock_item_unsubmit.review_queue_id ) expected_return_value = { "items": [ { "rejection_id": mock_rejection.rejection_id, "table_name": "releases", "field_name": "general_comments", "comments": mock_rejection.note, "corrected": "N", "key_id": 0 } ] } results = rejection_logic.get_rejection(1) assert results.message == expected_return_value assert results.status == 200 def test_get_rejection_no_rejection(): """Test get rejection notes for workstation.""" mock_item = create_test_review_queue_item( **{"review_queue_id": 1, "product_id": 1, "status": "complete"} ) create_test_approval( **{ "review_queue_id": mock_item.review_queue_id, "user_id": "bar", "created_datetime": datetime(2023, 1, 21, 13, 34, 5, 80), "note": "foobar", } ) expected_return_value = { "items": [] } results = rejection_logic.get_rejection(1) assert results.message == expected_return_value assert results.status == 200