import pytest
from unittest.mock import patch, MagicMock
import argparse
from setup.cli.commands.install import get_components_to_install

class TestGetComponents:
    @patch('setup.cli.commands.install.select_mcp_servers')
    def test_get_components_to_install_interactive_mcp(self, mock_select_mcp):
        # Arrange
        mock_registry = MagicMock()
        mock_config_manager = MagicMock()
        mock_config_manager._installation_context = {}
        mock_select_mcp.return_value = ['magic']

        args = argparse.Namespace(components=['mcp'])

        # Act
        components = get_components_to_install(args, mock_registry, mock_config_manager)

        # Assert
        mock_select_mcp.assert_called_once()
        assert 'mcp' in components
        assert 'mcp_docs' in components # Should be added automatically
        assert hasattr(mock_config_manager, '_installation_context')
        assert mock_config_manager._installation_context['selected_mcp_servers'] == ['magic']
