/
/
/
1"""Unit tests for Apple Music ID helpers."""
2
3from typing import Any
4
5import pytest
6
7from music_assistant.providers.apple_music import AppleMusicProvider
8
9
10@pytest.fixture
11def provider() -> AppleMusicProvider:
12 """Return a minimal AppleMusicProvider instance for helper testing."""
13 # Avoid Provider __init__ complexity; is_library_id does not use instance state.
14 return AppleMusicProvider.__new__(AppleMusicProvider)
15
16
17def test_is_library_id_accepts_library_prefixes(provider: AppleMusicProvider) -> None:
18 """Confirm expected library prefixes are accepted."""
19 for prefix in ("a.", "i.", "l.", "p."):
20 assert provider.is_library_id(f"{prefix}ABC123")
21
22
23def test_is_library_id_rejects_pl_u_prefix(provider: AppleMusicProvider) -> None:
24 """Reject the invalid pl.u- prefix."""
25 assert not provider.is_library_id("pl.u-ABC123")
26 assert not provider.is_library_id("pl.u-1")
27
28
29def test_is_library_id_rejects_invalid_values(provider: AppleMusicProvider) -> None:
30 """Reject malformed values and non-string inputs."""
31 for value in ("", "a.", "x.123", "pl.123", "p.123-456"):
32 assert not provider.is_library_id(value)
33 invalid_non_str: list[Any] = [None, 123, 12.3]
34 for value in invalid_non_str:
35 assert not provider.is_library_id(value)
36