Fix Bang & Olufsen event testing (#135707)

Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
This commit is contained in:
Markus Jacobsen 2025-01-16 19:06:18 +01:00 committed by GitHub
parent d908d2ab55
commit e188d9a00c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 56 additions and 30 deletions

View File

@ -42,18 +42,18 @@ TEST_MODEL_CORE = "Beoconnect Core"
TEST_MODEL_THEATRE = "Beosound Theatre" TEST_MODEL_THEATRE = "Beosound Theatre"
TEST_MODEL_LEVEL = "Beosound Level" TEST_MODEL_LEVEL = "Beosound Level"
TEST_SERIAL_NUMBER = "11111111" TEST_SERIAL_NUMBER = "11111111"
TEST_SERIAL_NUMBER_2 = "22222222"
TEST_NAME = f"{TEST_MODEL_BALANCE}-{TEST_SERIAL_NUMBER}" TEST_NAME = f"{TEST_MODEL_BALANCE}-{TEST_SERIAL_NUMBER}"
TEST_NAME_2 = f"{TEST_MODEL_BALANCE}-{TEST_SERIAL_NUMBER_2}"
TEST_FRIENDLY_NAME = "Living room Balance" TEST_FRIENDLY_NAME = "Living room Balance"
TEST_TYPE_NUMBER = "1111" TEST_TYPE_NUMBER = "1111"
TEST_ITEM_NUMBER = "1111111" TEST_ITEM_NUMBER = "1111111"
TEST_JID_1 = f"{TEST_TYPE_NUMBER}.{TEST_ITEM_NUMBER}.{TEST_SERIAL_NUMBER}@products.bang-olufsen.com" TEST_JID_1 = f"{TEST_TYPE_NUMBER}.{TEST_ITEM_NUMBER}.{TEST_SERIAL_NUMBER}@products.bang-olufsen.com"
TEST_MEDIA_PLAYER_ENTITY_ID = "media_player.beosound_balance_11111111" TEST_MEDIA_PLAYER_ENTITY_ID = "media_player.beosound_balance_11111111"
TEST_FRIENDLY_NAME_2 = "Laundry room Balance" TEST_FRIENDLY_NAME_2 = "Laundry room Core"
TEST_JID_2 = f"{TEST_TYPE_NUMBER}.{TEST_ITEM_NUMBER}.22222222@products.bang-olufsen.com" TEST_SERIAL_NUMBER_2 = "22222222"
TEST_MEDIA_PLAYER_ENTITY_ID_2 = "media_player.beosound_balance_22222222" TEST_NAME_2 = f"{TEST_MODEL_CORE}-{TEST_SERIAL_NUMBER_2}"
TEST_JID_2 = f"{TEST_TYPE_NUMBER}.{TEST_ITEM_NUMBER}.{TEST_SERIAL_NUMBER_2}@products.bang-olufsen.com"
TEST_MEDIA_PLAYER_ENTITY_ID_2 = "media_player.beoconnect_core_22222222"
TEST_HOST_2 = "192.168.0.2" TEST_HOST_2 = "192.168.0.2"
TEST_FRIENDLY_NAME_3 = "Lego room Balance" TEST_FRIENDLY_NAME_3 = "Lego room Balance"
@ -84,7 +84,7 @@ TEST_DATA_CREATE_ENTRY = {
CONF_NAME: TEST_NAME, CONF_NAME: TEST_NAME,
} }
TEST_DATA_CREATE_ENTRY_2 = { TEST_DATA_CREATE_ENTRY_2 = {
CONF_HOST: TEST_HOST, CONF_HOST: TEST_HOST_2,
CONF_MODEL: TEST_MODEL_CORE, CONF_MODEL: TEST_MODEL_CORE,
CONF_BEOLINK_JID: TEST_JID_2, CONF_BEOLINK_JID: TEST_JID_2,
CONF_NAME: TEST_NAME_2, CONF_NAME: TEST_NAME_2,

View File

@ -0,0 +1,21 @@
# serializer version: 1
# name: test_button_event_creation
list([
'event.beosound_balance_11111111_bluetooth',
'event.beosound_balance_11111111_microphone',
'event.beosound_balance_11111111_next',
'event.beosound_balance_11111111_play_pause',
'event.beosound_balance_11111111_favourite_1',
'event.beosound_balance_11111111_favourite_2',
'event.beosound_balance_11111111_favourite_3',
'event.beosound_balance_11111111_favourite_4',
'event.beosound_balance_11111111_previous',
'event.beosound_balance_11111111_volume',
'media_player.beosound_balance_11111111',
])
# ---
# name: test_button_event_creation_beoconnect_core
list([
'media_player.beoconnect_core_22222222',
])
# ---

View File

@ -642,7 +642,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com',
'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com',
]), ]),
@ -661,7 +661,7 @@
'supported_features': <MediaPlayerEntityFeature: 2095933>, 'supported_features': <MediaPlayerEntityFeature: 2095933>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'media_player.beosound_balance_22222222', 'entity_id': 'media_player.beoconnect_core_22222222',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
@ -737,7 +737,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com',
'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com',
]), ]),
@ -756,7 +756,7 @@
'supported_features': <MediaPlayerEntityFeature: 2095933>, 'supported_features': <MediaPlayerEntityFeature: 2095933>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'media_player.beosound_balance_22222222', 'entity_id': 'media_player.beoconnect_core_22222222',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
@ -831,7 +831,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com',
'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com',
]), ]),
@ -850,7 +850,7 @@
'supported_features': <MediaPlayerEntityFeature: 2095933>, 'supported_features': <MediaPlayerEntityFeature: 2095933>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'media_player.beosound_balance_22222222', 'entity_id': 'media_player.beoconnect_core_22222222',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
@ -924,7 +924,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com',
'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com',
]), ]),
@ -943,7 +943,7 @@
'supported_features': <MediaPlayerEntityFeature: 2095933>, 'supported_features': <MediaPlayerEntityFeature: 2095933>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'media_player.beosound_balance_22222222', 'entity_id': 'media_player.beoconnect_core_22222222',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,
@ -1003,7 +1003,7 @@
'attributes': ReadOnlyDict({ 'attributes': ReadOnlyDict({
'beolink': dict({ 'beolink': dict({
'leader': dict({ 'leader': dict({
'Laundry room Balance': '1111.1111111.22222222@products.bang-olufsen.com', 'Laundry room Core': '1111.1111111.22222222@products.bang-olufsen.com',
}), }),
'peers': dict({ 'peers': dict({
'Lego room Balance': '1111.1111111.33333333@products.bang-olufsen.com', 'Lego room Balance': '1111.1111111.33333333@products.bang-olufsen.com',
@ -1017,7 +1017,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'media_player.beosound_balance_11111111', 'media_player.beosound_balance_11111111',
]), ]),
'media_content_type': <MediaType.MUSIC: 'music'>, 'media_content_type': <MediaType.MUSIC: 'music'>,
@ -1062,7 +1062,7 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Living room Balance', 'friendly_name': 'Living room Balance',
'group_members': list([ 'group_members': list([
'media_player.beosound_balance_22222222', 'media_player.beoconnect_core_22222222',
'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.33333333@products.bang-olufsen.com',
'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com', 'listener_not_in_hass-1111.1111111.44444444@products.bang-olufsen.com',
]), ]),
@ -1081,7 +1081,7 @@
'supported_features': <MediaPlayerEntityFeature: 2095933>, 'supported_features': <MediaPlayerEntityFeature: 2095933>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'media_player.beosound_balance_22222222', 'entity_id': 'media_player.beoconnect_core_22222222',
'last_changed': <ANY>, 'last_changed': <ANY>,
'last_reported': <ANY>, 'last_reported': <ANY>,
'last_updated': <ANY>, 'last_updated': <ANY>,

View File

@ -4,6 +4,7 @@ from unittest.mock import AsyncMock
from inflection import underscore from inflection import underscore
from mozart_api.models import ButtonEvent from mozart_api.models import ButtonEvent
from syrupy.assertion import SnapshotAssertion
from homeassistant.components.bang_olufsen.const import ( from homeassistant.components.bang_olufsen.const import (
DEVICE_BUTTON_EVENTS, DEVICE_BUTTON_EVENTS,
@ -25,6 +26,7 @@ async def test_button_event_creation(
mock_config_entry: MockConfigEntry, mock_config_entry: MockConfigEntry,
mock_mozart_client: AsyncMock, mock_mozart_client: AsyncMock,
entity_registry: EntityRegistry, entity_registry: EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test button event entities are created.""" """Test button event entities are created."""
@ -35,14 +37,21 @@ async def test_button_event_creation(
# Add Button Event entity ids # Add Button Event entity ids
entity_ids = [ entity_ids = [
f"event.beosound_balance_11111111_{underscore(button_type)}".replace( f"event.beosound_balance_11111111_{underscore(button_type)}".replace(
"preset", "preset_" "preset", "favourite_"
) )
for button_type in DEVICE_BUTTONS for button_type in DEVICE_BUTTONS
] ]
# Check that the entities are available # Check that the entities are available
for entity_id in entity_ids: for entity_id in entity_ids:
entity_registry.async_get(entity_id) assert entity_registry.async_get(entity_id)
# Check number of entities
# The media_player entity and all of the button event entities should be the only available
entity_ids_available = list(entity_registry.entities.keys())
assert len(entity_ids_available) == 1 + len(entity_ids)
assert entity_ids_available == snapshot
async def test_button_event_creation_beoconnect_core( async def test_button_event_creation_beoconnect_core(
@ -50,6 +59,7 @@ async def test_button_event_creation_beoconnect_core(
mock_config_entry_core: MockConfigEntry, mock_config_entry_core: MockConfigEntry,
mock_mozart_client: AsyncMock, mock_mozart_client: AsyncMock,
entity_registry: EntityRegistry, entity_registry: EntityRegistry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test button event entities are not created when using a Beoconnect Core.""" """Test button event entities are not created when using a Beoconnect Core."""
@ -57,17 +67,12 @@ async def test_button_event_creation_beoconnect_core(
mock_config_entry_core.add_to_hass(hass) mock_config_entry_core.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry_core.entry_id) await hass.config_entries.async_setup(mock_config_entry_core.entry_id)
# Add Button Event entity ids # Check number of entities
entity_ids = [ # The media_player entity should be the only available
f"event.beosound_balance_11111111_{underscore(button_type)}".replace( entity_ids_available = list(entity_registry.entities.keys())
"preset", "preset_" assert len(entity_ids_available) == 1
)
for button_type in DEVICE_BUTTONS
]
# Check that the entities are unavailable assert entity_ids_available == snapshot
for entity_id in entity_ids:
assert not entity_registry.async_get(entity_id)
async def test_button( async def test_button(