mirror of
https://github.com/SuperClaude-Org/SuperClaude_Framework.git
synced 2025-12-17 17:56:46 +00:00
59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
|
|
import pytest
|
||
|
|
from pathlib import Path
|
||
|
|
from unittest.mock import patch, MagicMock, ANY
|
||
|
|
import argparse
|
||
|
|
from setup.cli.commands import install
|
||
|
|
|
||
|
|
class TestInstallCommand:
|
||
|
|
@patch('setup.cli.commands.install.get_components_to_install')
|
||
|
|
@patch('setup.cli.commands.install.ComponentRegistry')
|
||
|
|
@patch('setup.cli.commands.install.ConfigService')
|
||
|
|
@patch('setup.cli.commands.install.Validator')
|
||
|
|
@patch('setup.cli.commands.install.display_installation_plan')
|
||
|
|
@patch('setup.cli.commands.install.perform_installation')
|
||
|
|
@patch('setup.cli.commands.install.confirm', return_value=True)
|
||
|
|
@patch('setup.cli.commands.install.validate_system_requirements', return_value=True)
|
||
|
|
@patch('pathlib.Path.home')
|
||
|
|
def test_run_resolves_dependencies_before_planning(
|
||
|
|
self, mock_home, mock_validate_reqs, mock_confirm, mock_perform,
|
||
|
|
mock_display, mock_validator, mock_config, mock_registry_class,
|
||
|
|
mock_get_components, tmp_path
|
||
|
|
):
|
||
|
|
# Arrange
|
||
|
|
mock_home.return_value = tmp_path
|
||
|
|
install_dir = tmp_path / ".claude"
|
||
|
|
|
||
|
|
mock_args = argparse.Namespace(
|
||
|
|
components=['mcp'],
|
||
|
|
install_dir=install_dir,
|
||
|
|
quiet=True, # to avoid calling display_header
|
||
|
|
yes=True,
|
||
|
|
force=False,
|
||
|
|
dry_run=False,
|
||
|
|
diagnose=False,
|
||
|
|
list_components=False
|
||
|
|
)
|
||
|
|
|
||
|
|
mock_registry_instance = MagicMock()
|
||
|
|
mock_registry_class.return_value = mock_registry_instance
|
||
|
|
|
||
|
|
mock_config_instance = MagicMock()
|
||
|
|
mock_config.return_value = mock_config_instance
|
||
|
|
mock_config_instance.validate_config_files.return_value = []
|
||
|
|
|
||
|
|
mock_get_components.return_value = ['mcp']
|
||
|
|
mock_registry_instance.resolve_dependencies.return_value = ['core', 'mcp']
|
||
|
|
|
||
|
|
# Act
|
||
|
|
install.run(mock_args)
|
||
|
|
|
||
|
|
# Assert
|
||
|
|
# Check that resolve_dependencies was called with the initial list
|
||
|
|
mock_registry_instance.resolve_dependencies.assert_called_once_with(['mcp'])
|
||
|
|
|
||
|
|
# Check that display_installation_plan was not called because of quiet=True
|
||
|
|
mock_display.assert_not_called()
|
||
|
|
|
||
|
|
# Check that perform_installation was called with the resolved list
|
||
|
|
mock_perform.assert_called_once_with(['core', 'mcp'], mock_args, ANY)
|