SIENTIAPDE-1241: Added remaining model repository tests

This commit is contained in:
Kou-Kinoshita
2025-10-30 09:58:46 -03:00
parent c699a47261
commit 928c679223

View File

@@ -802,3 +802,66 @@ def test_generate_artifacts_header_not_found(
with pytest.raises(FileNotFoundError, match='Header file does not exist'): with pytest.raises(FileNotFoundError, match='Header file does not exist'):
repo._generate_artifacts(mock_train_result) repo._generate_artifacts(mock_train_result)
@patch('model_manager.utils.repository.model_repository.ModelServing')
@patch('model_manager.utils.repository.model_repository.json.dump')
@patch('model_manager.utils.repository.model_repository.Reports')
@patch('model_manager.utils.repository.model_repository.path.exists')
@patch('model_manager.utils.repository.model_repository.path.join')
@patch('model_manager.utils.repository.model_repository.os.makedirs')
@patch('model_manager.utils.repository.model_repository.shutil.copy')
@patch('builtins.open', create=True)
def test_generate_artifacts_full_success_path(
mock_open,
mock_copy,
mock_makedirs,
mock_path_join,
mock_exists,
mock_reports_class,
mock_json_dump,
mock_model_serving_class,
mock_logger,
mock_train_result,
):
"""Test _generate_artifacts complete success path covering lines 147-148."""
from model_manager.utils.repository.model_repository import ModelRepository
repo = ModelRepository(
url='http://mlflow.test', username='user', password='pass', logger=mock_logger
)
# Mock all path operations
def join_side_effect(*args):
return '/'.join(str(arg) for arg in args)
mock_path_join.side_effect = join_side_effect
# Mock path.exists to return True for header file and other files
def exists_side_effect(path_arg):
if 'header.html' in str(path_arg):
return True # Header exists
if 'report.html' in str(path_arg):
return False # Report doesn't exist yet (will be created)
return False
mock_exists.side_effect = exists_side_effect
# Mock Reports class
mock_reports_instance = MagicMock()
mock_reports_instance.generate_report = MagicMock(return_value='<html>report</html>')
mock_reports_class.return_value = mock_reports_instance
# Mock DataFrame.to_csv to avoid actual file I/O
with patch.object(pd.DataFrame, 'to_csv'):
result = repo._generate_artifacts(mock_train_result)
# Verify the result is returned correctly
assert result == mock_train_result
# Verify _setup_run_directory was called (line 147)
mock_makedirs.assert_called_once()
mock_copy.assert_called_once()
# Verify _generate_report was called (line 148)
mock_reports_instance.generate_report.assert_called_once()