core/tests/components/cambridge_audio/test_init.py

68 lines
2.3 KiB
Python
Raw Normal View History

"""Tests for the Cambridge Audio integration."""
from unittest.mock import AsyncMock, Mock
from aiostreammagic import StreamMagicError
from aiostreammagic.models import CallbackType
import pytest
from syrupy import SnapshotAssertion
from homeassistant.components.cambridge_audio.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from . import mock_state_update, setup_integration
from tests.common import MockConfigEntry
async def test_config_entry_not_ready(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_stream_magic_client: AsyncMock,
) -> None:
"""Test the Cambridge Audio configuration entry not ready."""
mock_stream_magic_client.connect = AsyncMock(side_effect=StreamMagicError())
await setup_integration(hass, mock_config_entry)
assert mock_config_entry.state is ConfigEntryState.SETUP_RETRY
mock_stream_magic_client.connect = AsyncMock(return_value=True)
async def test_device_info(
hass: HomeAssistant,
snapshot: SnapshotAssertion,
mock_stream_magic_client: AsyncMock,
mock_config_entry: MockConfigEntry,
device_registry: dr.DeviceRegistry,
) -> None:
"""Test device registry integration."""
await setup_integration(hass, mock_config_entry)
device_entry = device_registry.async_get_device(
identifiers={(DOMAIN, mock_config_entry.unique_id)}
)
assert device_entry is not None
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