From 03ac4b31e521ec880fdc774ad7fbefc400104917 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Thu, 20 Aug 2026 08:28:45 -0300 Subject: [PATCH] QTZPOC-13 fix coverage --- .../utils/repository/test_model_repository.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/laborious/utils/repository/test_model_repository.py b/tests/laborious/utils/repository/test_model_repository.py index 457e29f..5ea4ce7 100644 --- a/tests/laborious/utils/repository/test_model_repository.py +++ b/tests/laborious/utils/repository/test_model_repository.py @@ -1972,6 +1972,30 @@ async def test_load_transform_model_both_attempts_fail_emits_error_metric( assert emitted_tags(mlflow_repository.emit_metric, metrics.MODEL_READ_COUNT) == [] +@patch(JOBLIB_PATH) +@pytest.mark.asyncio +async def test_download_model_wrapper_both_attempts_fail_chains_causes( + joblib_mock, mlflow, mlflow_repository, tmp_path +): + flavor_error = Exception('flavor boom') + artifact_dir = build_artifact_dir(tmp_path, 'MLmodel', 'python_model.pkl') + mlflow_repository.dowload_artifacts = AsyncMock(return_value=artifact_dir) + mlflow.pyfunc.load_model.side_effect = flavor_error + joblib_mock.load.side_effect = ValueError('joblib boom') + + with pytest.raises(ValueError) as exc_info: + await mlflow_repository.download_model('test_model', {}, 'predict', 'pyfunc', True) + + assert str(exc_info.value) == 'joblib boom' + assert exc_info.value.__cause__ is flavor_error + + error_tags = emitted_tags(mlflow_repository.emit_metric, metrics.MODEL_READ_ERROR_COUNT) + assert len(error_tags) == 1 + assert error_tags[0]['operation_type'] == 'download_model_wrapper_joblib_fallback' + assert emitted_tags(mlflow_repository.emit_metric, metrics.MODEL_READ_COUNT) == [] + mlflow_repository.observe_lag.assert_not_called() + + @patch(JOBLIB_PATH) @pytest.mark.asyncio async def test_load_predict_model_fallback_success_metrics(