import pytest
from event_handlers import EventHandlerRegistry, InvalidEventError

def test_register_and_call_handler():
    """Test that registered handlers can be called safely"""
    registry = EventHandlerRegistry()

    # Mock handler
    called = []
    def mock_handler(player, mode, key, message):
        called.append((player, mode, key, message))
        return "success"

    registry.register("testEvent", mock_handler)
    result = registry.call("testEvent", "player1", "answer", "key1", "msg1")

    assert result == "success"
    assert len(called) == 1
    assert called[0] == ("player1", "answer", "key1", "msg1")

def test_invalid_event_raises_error():
    """Test that invalid events raise proper error"""
    registry = EventHandlerRegistry()

    with pytest.raises(InvalidEventError):
        registry.call("malicious__import__", "player", "answer", None, None)

def test_cannot_call_unregistered_event():
    """Test that unregistered events cannot be called"""
    registry = EventHandlerRegistry()

    with pytest.raises(InvalidEventError):
        registry.call("nonexistent", "player", "answer", None, None)
