/
/
1"""Shared fixtures for Soundcloud provider tests."""
2
3from __future__ import annotations
4
5from unittest.mock import AsyncMock, Mock
6
7import pytest
8
9from music_assistant.providers.soundcloud import SUPPORTED_FEATURES, SoundcloudMusicProvider
10
11
12@pytest.fixture
13def provider() -> SoundcloudMusicProvider:
14 """Create a real SoundcloudMusicProvider with mocked dependencies."""
15 mass = Mock()
16 manifest = Mock()
17 manifest.domain = "soundcloud"
18 config = Mock()
19 config.instance_id = "soundcloud--test123"
20 config.name = "Soundcloud Test"
21 config.enabled = True
22 config.get_value.side_effect = lambda key, default=None: {
23 "log_level": "GLOBAL",
24 }.get(key, default)
25 prov = SoundcloudMusicProvider(mass, manifest, config, SUPPORTED_FEATURES)
26 # stand in for the api client that handle_async_init would otherwise create
27 prov._soundcloud = AsyncMock()
28 prov._soundcloud.client_id = "test-client-id"
29 prov._soundcloud.headers = {"Authorization": "OAuth test-token"}
30 prov._soundcloud.get_user_details.return_value = {
31 "id": 1,
32 "username": "Some Artist",
33 "permalink": "some-artist",
34 }
35 prov._user_id = "1"
36 return prov
37