SIENTIAPDE-1241: Added remaining model repository tests
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user