import os
import json
import pytest
from src import models

def test_mcp_server_config_to_from_dict():
    data = {
        "command": "node",
        "args": ["server.js"],
        "auto_start": True
    }
    cfg = models.MCPServerConfig.from_dict("test-server", data)
    assert cfg.name == "test-server"
    assert cfg.command == "node"
    assert cfg.args == ["server.js"]
    assert cfg.auto_start is True
    
    assert cfg.to_dict() == data

def test_mcp_configuration_to_from_dict():
    data = {
        "mcpServers": {
            "server1": {
                "command": "python",
                "args": ["-m", "mcp_server"],
                "auto_start": False
            },
            "server2": {
                "url": "http://localhost:8080/sse",
                "auto_start": True
            }
        }
    }
    cfg = models.MCPConfiguration.from_dict(data)
    assert len(cfg.mcpServers) == 2
    assert cfg.mcpServers["server1"].command == "python"
    assert cfg.mcpServers["server2"].url == "http://localhost:8080/sse"
    assert cfg.to_dict() == data

def test_load_mcp_config(tmp_path):
    config_file = tmp_path / "mcp_config.json"
    data = {
        "mcpServers": {
            "test": {"command": "echo", "args": ["hello"]}
        }
    }
    config_file.write_text(json.dumps(data))
    
    # We'll need a way to load from a specific path
    # Maybe models.load_mcp_config(path)
    cfg = models.load_mcp_config(str(config_file))
    assert "test" in cfg.mcpServers
    assert cfg.mcpServers["test"].command == "echo"
