mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 19:09:32 +00:00
* Disambiguate bewtween servers and player to stop them being merged * ruff format * make SqueezeLite players not a service * ruff * Tidy redunant code * config url * revert config url * change to domain server * use default to see how they are mereged with server device * refactor to use defaults so where a player is part of a bigger ie server service device in the same intergration it doesnt replace its information * ruff * make test match the new data * Fix merge * Fix tests * Fix meregd test data * Fix all tests add new test for merged device in reg * Remove info from device_info so its only a lookup * manual merge of server player shared devices * Fix format of merged entires * fixes for testing * Fix test with input from @peteS-UK device knowlonger exits for this test * Fix test now device doesnt exits for tests * Update homeassistant/components/squeezebox/media_player.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix Copilots formatting * Apply suggestions from code review --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com>
136 lines
4.2 KiB
Python
136 lines
4.2 KiB
Python
"""Tests for the Squeezebox alarm switch platform."""
|
|
|
|
from datetime import timedelta
|
|
from unittest.mock import MagicMock
|
|
|
|
from freezegun.api import FrozenDateTimeFactory
|
|
from syrupy.assertion import SnapshotAssertion
|
|
|
|
from homeassistant.components.squeezebox.const import PLAYER_UPDATE_INTERVAL
|
|
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
|
|
from homeassistant.const import CONF_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.entity_registry import EntityRegistry
|
|
|
|
from .conftest import TEST_ALARM_ID
|
|
|
|
from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform
|
|
|
|
|
|
async def test_entity_registry(
|
|
hass: HomeAssistant,
|
|
entity_registry: EntityRegistry,
|
|
mock_alarms_player: MagicMock,
|
|
snapshot: SnapshotAssertion,
|
|
config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Test squeezebox media_player entity registered in the entity registry."""
|
|
await snapshot_platform(hass, entity_registry, snapshot, config_entry.entry_id)
|
|
|
|
|
|
async def test_switch_state(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
freezer: FrozenDateTimeFactory,
|
|
) -> None:
|
|
"""Test the state of the switch."""
|
|
assert hass.states.get(f"switch.none_alarm_{TEST_ALARM_ID}").state == "on"
|
|
|
|
mock_alarms_player.alarms[0]["enabled"] = False
|
|
freezer.tick(timedelta(seconds=PLAYER_UPDATE_INTERVAL))
|
|
async_fire_time_changed(hass)
|
|
await hass.async_block_till_done()
|
|
assert hass.states.get(f"switch.none_alarm_{TEST_ALARM_ID}").state == "off"
|
|
|
|
|
|
async def test_switch_deleted(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
freezer: FrozenDateTimeFactory,
|
|
) -> None:
|
|
"""Test detecting switch deleted."""
|
|
assert hass.states.get(f"switch.none_alarm_{TEST_ALARM_ID}").state == "on"
|
|
|
|
mock_alarms_player.alarms = []
|
|
freezer.tick(timedelta(seconds=PLAYER_UPDATE_INTERVAL))
|
|
async_fire_time_changed(hass)
|
|
await hass.async_block_till_done()
|
|
assert hass.states.get(f"switch.none_alarm_{TEST_ALARM_ID}") is None
|
|
|
|
|
|
async def test_turn_on(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
) -> None:
|
|
"""Test turning on the switch."""
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_ON,
|
|
{CONF_ENTITY_ID: f"switch.none_alarm_{TEST_ALARM_ID}"},
|
|
blocking=True,
|
|
)
|
|
mock_alarms_player.async_update_alarm.assert_called_once_with(
|
|
TEST_ALARM_ID, enabled=True
|
|
)
|
|
|
|
|
|
async def test_turn_off(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
) -> None:
|
|
"""Test turning on the switch."""
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_OFF,
|
|
{CONF_ENTITY_ID: f"switch.none_alarm_{TEST_ALARM_ID}"},
|
|
blocking=True,
|
|
)
|
|
mock_alarms_player.async_update_alarm.assert_called_once_with(
|
|
TEST_ALARM_ID, enabled=False
|
|
)
|
|
|
|
|
|
async def test_alarms_enabled_state(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
freezer: FrozenDateTimeFactory,
|
|
) -> None:
|
|
"""Test the alarms enabled switch."""
|
|
|
|
assert hass.states.get("switch.none_alarms_enabled").state == "on"
|
|
|
|
mock_alarms_player.alarms_enabled = False
|
|
freezer.tick(timedelta(seconds=PLAYER_UPDATE_INTERVAL))
|
|
async_fire_time_changed(hass)
|
|
await hass.async_block_till_done()
|
|
|
|
assert hass.states.get("switch.none_alarms_enabled").state == "off"
|
|
|
|
|
|
async def test_alarms_enabled_turn_on(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
) -> None:
|
|
"""Test turning on the alarms enabled switch."""
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_ON,
|
|
{CONF_ENTITY_ID: "switch.none_alarms_enabled"},
|
|
blocking=True,
|
|
)
|
|
mock_alarms_player.async_set_alarms_enabled.assert_called_once_with(True)
|
|
|
|
|
|
async def test_alarms_enabled_turn_off(
|
|
hass: HomeAssistant,
|
|
mock_alarms_player: MagicMock,
|
|
) -> None:
|
|
"""Test turning off the alarms enabled switch."""
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_OFF,
|
|
{CONF_ENTITY_ID: "switch.none_alarms_enabled"},
|
|
blocking=True,
|
|
)
|
|
mock_alarms_player.async_set_alarms_enabled.assert_called_once_with(False)
|