"""Test score_history logic.""" import pytest from product_review.logic import score_history as score_history_logic from product_review.models import score_history as score_history_model @pytest.mark.parametrize( ( "test_description", "review_queue_id", "validation_result", "failed_validations", "confidence_score", "score_reasoning", "auto_approved", "score_version", ), [ ( "success with PASS validation", 123, "PASS", None, 95, {"reason": "High quality"}, True, 1.0, ), ( "with validation failures", 456, "FAIL", ["validation_1", "validation_2"], 30, {"details": "Failed multiple validations"}, False, 2.0, ), ( "with auto_approved", 789, "PASS", None, 100, {"reason": "Auto approved"}, True, 1.5, ), ], ) def test_score_review_queue_item( test_description, review_queue_id, validation_result, failed_validations, confidence_score, score_reasoning, auto_approved, score_version, mocker, ): """Test score_review_queue_item with various parameters.""" mocker.patch.object(score_history_model, "add_score") result = score_history_logic.score_review_queue_item( review_queue_id=review_queue_id, validation_result=validation_result, failed_validations=failed_validations, confidence_score=confidence_score, score_reasoning=score_reasoning, auto_approved=auto_approved, score_version=score_version, ) assert result.message == "Successfully added score history record." score_history_model.add_score.assert_called_once_with( review_queue_id, validation_result, failed_validations, confidence_score, score_reasoning, auto_approved, score_version, ) def test_get_score(mocker): """Test get_score.""" mocker.patch.object( score_history_model, "get_score", return_value={"foo": "bar"} ) result = score_history_logic.get_score(1) assert result.message == {"foo": "bar"} assert result.status == 200 def test_get_score_not_found(mocker): """Test get_score not found.""" mocker.patch.object(score_history_model, "get_score", return_value=None) with pytest.raises(Exception) as er: score_history_logic.get_score(1) assert ( str(getattr(er, "value", None)) == '{"status": 404, "code": "not_found", "message": "Not Found"}')