import pytest
from unittest.mock import MagicMock, patch
import os
import sys

# Ensure project root is in path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from simulation.sim_base import BaseSimulation

def test_base_simulation_init():
    with patch('simulation.sim_base.ApiHookClient') as mock_client_class:
        mock_client = MagicMock()
        mock_client_class.return_value = mock_client
        
        sim = BaseSimulation()
        assert sim.client == mock_client
        assert sim.sim is not None

def test_base_simulation_setup():
    mock_client = MagicMock()
    mock_client.wait_for_server.return_value = True
    
    with patch('simulation.sim_base.WorkflowSimulator') as mock_sim_class:
        mock_sim = MagicMock()
        mock_sim_class.return_value = mock_sim
        
        sim = BaseSimulation(mock_client)
        sim.setup("TestSim")
        
        mock_client.wait_for_server.assert_called()
        mock_client.click.assert_any_call("btn_reset")
        mock_sim.setup_new_project.assert_called()
        assert sim.project_path.endswith("temp_testsim.toml")
