Add disconnect/reconnect tests to Cambridge Audio (#131100)

This commit is contained in:
Noah Husby 2024-11-26 04:55:03 -05:00 committed by GitHub
parent 0b7fbe1d17
commit d2f862b7b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 10 deletions

View File

@ -1,5 +1,9 @@
"""Tests for the Cambridge Audio integration.""" """Tests for the Cambridge Audio integration."""
from unittest.mock import AsyncMock
from aiostreammagic.models import CallbackType
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -11,3 +15,11 @@ async def setup_integration(hass: HomeAssistant, config_entry: MockConfigEntry)
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()
async def mock_state_update(
client: AsyncMock, callback_type: CallbackType = CallbackType.STATE
) -> None:
"""Trigger a callback in the media player."""
for callback in client.register_state_update_callbacks.call_args_list:
await callback[0][0](client, callback_type)

View File

@ -1,8 +1,10 @@
"""Tests for the Cambridge Audio integration.""" """Tests for the Cambridge Audio integration."""
from unittest.mock import AsyncMock from unittest.mock import AsyncMock, Mock
from aiostreammagic import StreamMagicError from aiostreammagic import StreamMagicError
from aiostreammagic.models import CallbackType
import pytest
from syrupy import SnapshotAssertion from syrupy import SnapshotAssertion
from homeassistant.components.cambridge_audio.const import DOMAIN from homeassistant.components.cambridge_audio.const import DOMAIN
@ -10,7 +12,7 @@ from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
from . import setup_integration from . import mock_state_update, setup_integration
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -43,3 +45,23 @@ async def test_device_info(
) )
assert device_entry is not None assert device_entry is not None
assert device_entry == snapshot assert device_entry == snapshot
async def test_disconnect_reconnect_log(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_stream_magic_client: AsyncMock,
mock_config_entry: MockConfigEntry,
device_registry: dr.DeviceRegistry,
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test device registry integration."""
await setup_integration(hass, mock_config_entry)
mock_stream_magic_client.is_connected = Mock(return_value=False)
await mock_state_update(mock_stream_magic_client, CallbackType.CONNECTION)
assert "Disconnected from device at 192.168.20.218" in caplog.text
mock_stream_magic_client.is_connected = Mock(return_value=True)
await mock_state_update(mock_stream_magic_client, CallbackType.CONNECTION)
assert "Reconnected to device at 192.168.20.218" in caplog.text

View File

@ -7,7 +7,6 @@ from aiostreammagic import (
ShuffleMode, ShuffleMode,
TransportControl, TransportControl,
) )
from aiostreammagic.models import CallbackType
import pytest import pytest
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
@ -49,18 +48,12 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError, ServiceValidationError from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
from . import setup_integration from . import mock_state_update, setup_integration
from .const import ENTITY_ID from .const import ENTITY_ID
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
async def mock_state_update(client: AsyncMock) -> None:
"""Trigger a callback in the media player."""
for callback in client.register_state_update_callbacks.call_args_list:
await callback[0][0](client, CallbackType.STATE)
async def test_entity_supported_features( async def test_entity_supported_features(
hass: HomeAssistant, hass: HomeAssistant,
mock_stream_magic_client: AsyncMock, mock_stream_magic_client: AsyncMock,