# test_main.py
import subprocess
import uuid
import pytest
from source.server.i import configure_interpreter
from unittest.mock import Mock
from fastapi.testclient import TestClient



@pytest.mark.asyncio
def test_ping(client):
    response = client.get("/ping")
    assert response.status_code == 200
    assert response.text == "pong"


def test_interpreter_chat(mock_interpreter):
    # Set up a sample conversation
    messages = [
        {"role": "user", "type": "message", "content": "Hello."},
        {"role": "assistant", "type": "message", "content": "Hi there!"},
        # Add more messages as needed
    ]

    # Configure the mock interpreter with the sample conversation
    mock_interpreter.messages = messages

    # Simulate additional user input
    user_input = {"role": "user", "type": "message", "content": "How are you?"}
    mock_interpreter.chat([user_input])

    # Ensure the interpreter processed the user input
    assert len(mock_interpreter.messages) == len(messages)
    assert mock_interpreter.messages[-1]["role"] == "assistant"
    assert "don't have feelings" in mock_interpreter.messages[-1]["content"]

def test_interpreter_configuration(mock_interpreter):
    # Test interpreter configuration
    interpreter = configure_interpreter(mock_interpreter)
    assert interpreter is not None