From a66c5abdfdacc46508d7301ad1b00bf473b2322e Mon Sep 17 00:00:00 2001 From: Bruno Domingues Date: Thu, 23 Oct 2025 00:30:48 -0300 Subject: [PATCH] SIENTIAPDE-1241: Add unit tests for custom exceptions in tests/utils/test_exceptions.py --- tests/utils/test_exceptions.py | 79 ++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/utils/test_exceptions.py diff --git a/tests/utils/test_exceptions.py b/tests/utils/test_exceptions.py new file mode 100644 index 0000000..4444596 --- /dev/null +++ b/tests/utils/test_exceptions.py @@ -0,0 +1,79 @@ +"""Unit tests for custom exceptions with 100% coverage.""" + +import pytest + + +def test_model_training_error_with_default_message(): + """Test ModelTrainingError with default message.""" + from model_manager.utils.exceptions import ModelTrainingError + + error = ModelTrainingError(model_trained=True, model_saved=False) + + assert error.model_trained is True + assert error.model_saved is False + assert str(error) == 'Model training workflow failed (model_trained=True, model_saved=False)' + + +def test_model_training_error_with_custom_message(): + """Test ModelTrainingError with custom message.""" + from model_manager.utils.exceptions import ModelTrainingError + + custom_msg = 'Custom error occurred during training' + error = ModelTrainingError(model_trained=False, model_saved=False, message=custom_msg) + + assert error.model_trained is False + assert error.model_saved is False + assert str(error) == custom_msg + + +def test_model_training_error_both_true(): + """Test ModelTrainingError when both flags are True.""" + from model_manager.utils.exceptions import ModelTrainingError + + error = ModelTrainingError(model_trained=True, model_saved=True) + + assert error.model_trained is True + assert error.model_saved is True + assert str(error) == 'Model training workflow failed (model_trained=True, model_saved=True)' + + +def test_model_training_error_both_false(): + """Test ModelTrainingError when both flags are False.""" + from model_manager.utils.exceptions import ModelTrainingError + + error = ModelTrainingError(model_trained=False, model_saved=False) + + assert error.model_trained is False + assert error.model_saved is False + assert str(error) == 'Model training workflow failed (model_trained=False, model_saved=False)' + + +def test_model_training_error_is_exception(): + """Test ModelTrainingError is an Exception subclass.""" + from model_manager.utils.exceptions import ModelTrainingError + + error = ModelTrainingError(model_trained=True, model_saved=False) + + assert isinstance(error, Exception) + + +def test_model_training_error_can_be_raised(): + """Test ModelTrainingError can be raised and caught.""" + from model_manager.utils.exceptions import ModelTrainingError + + with pytest.raises(ModelTrainingError) as exc_info: + raise ModelTrainingError(model_trained=True, model_saved=False) + + assert exc_info.value.model_trained is True + assert exc_info.value.model_saved is False + + +def test_model_training_error_with_empty_message(): + """Test ModelTrainingError with empty string message.""" + from model_manager.utils.exceptions import ModelTrainingError + + error = ModelTrainingError(model_trained=True, model_saved=True, message='') + + assert error.model_trained is True + assert error.model_saved is True + assert str(error) == ''