import pytest
from arcade.sdk import ToolContext


@pytest.fixture
def tool_context():
    """Fixture for the ToolContext with mock authorization."""
    return ToolContext(authorization={"token": "test_token", "user_id": "test_user"})


@pytest.fixture
def mock_httpx_client(mocker):
    """Fixture to mock the httpx.AsyncClient."""
    # Mock the AsyncClient context manager
    mock_client = mocker.patch("httpx.AsyncClient", autospec=True)
    async_mock_client = mock_client.return_value.__aenter__.return_value
    return async_mock_client


@pytest.fixture
def sample_track():
    """Fixture for a sample track."""
    return {
        "album": {"id": "1234567890", "name": "Test Album", "uri": "spotify:album:1234567890"},
        "artists": [{"name": "Test Artist", "type": "artist", "uri": "spotify:artist:1234567890"}],
        "available_markets": ["us"],
        "duration_ms": 123456,
        "id": "1234567890",
        "is_playable": True,
        "name": "Test Track",
        "popularity": 100,
        "type": "track",
        "uri": "spotify:track:1234567890",
    }
