/
/
/
1"""Tests for player queue output membership tracking."""
2
3from __future__ import annotations
4
5from types import SimpleNamespace
6from typing import Any, cast
7from unittest.mock import MagicMock
8
9from music_assistant.controllers.player_queues.playback_tracker import PlaybackTrackerMixin
10from music_assistant.models.player import Player
11
12
13def test_output_player_ids_resolve_protocol_parents() -> None:
14 """Processing membership uses user-facing protocol parent IDs."""
15 get_player = MagicMock()
16 tracker = cast(
17 "Any",
18 SimpleNamespace(mass=SimpleNamespace(players=SimpleNamespace(get_player=get_player))),
19 )
20 player = MagicMock(player_id="queue-1", protocol_parent_id=None)
21 player.state.group_members = ["queue-1", "protocol-1", "player-1", "missing-player"]
22 protocol_player = MagicMock(protocol_parent_id="player-1")
23 get_player.side_effect = lambda player_id: (
24 protocol_player if player_id == "protocol-1" else None
25 )
26
27 result = PlaybackTrackerMixin._get_output_player_ids(
28 tracker,
29 cast("Player", player),
30 )
31
32 assert result == {"queue-1", "player-1", "missing-player"}
33