"""Tests for Kaleidescape remote platform.""" from unittest.mock import MagicMock import pytest from homeassistant.components.remote import ( ATTR_COMMAND, DOMAIN as REMOTE_DOMAIN, SERVICE_SEND_COMMAND, ) from homeassistant.const import ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from . import MOCK_SERIAL from tests.common import MockConfigEntry ENTITY_ID = f"remote.kaleidescape_device_{MOCK_SERIAL}" async def test_entity( hass: HomeAssistant, mock_device: MagicMock, mock_integration: MockConfigEntry, ) -> None: """Test entity attributes.""" assert hass.states.get(ENTITY_ID) async def test_commands( hass: HomeAssistant, mock_device: MagicMock, mock_integration: MockConfigEntry, ) -> None: """Test service calls.""" await hass.services.async_call( REMOTE_DOMAIN, SERVICE_TURN_ON, {ATTR_ENTITY_ID: ENTITY_ID}, blocking=True, ) assert mock_device.leave_standby.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_TURN_OFF, {ATTR_ENTITY_ID: ENTITY_ID}, blocking=True, ) assert mock_device.enter_standby.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["select"]}, blocking=True, ) assert mock_device.select.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["up"]}, blocking=True, ) assert mock_device.up.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["down"]}, blocking=True, ) assert mock_device.down.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["left"]}, blocking=True, ) assert mock_device.left.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["right"]}, blocking=True, ) assert mock_device.right.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["cancel"]}, blocking=True, ) assert mock_device.cancel.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["replay"]}, blocking=True, ) assert mock_device.replay.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["scan_forward"]}, blocking=True, ) assert mock_device.scan_forward.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["scan_reverse"]}, blocking=True, ) assert mock_device.scan_reverse.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["go_movie_covers"]}, blocking=True, ) assert mock_device.go_movie_covers.call_count == 1 await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["menu_toggle"]}, blocking=True, ) assert mock_device.menu_toggle.call_count == 1 async def test_unknown_command( hass: HomeAssistant, mock_device: MagicMock, mock_integration: MockConfigEntry, ) -> None: """Test service calls.""" with pytest.raises(HomeAssistantError) as err: await hass.services.async_call( REMOTE_DOMAIN, SERVICE_SEND_COMMAND, {ATTR_ENTITY_ID: ENTITY_ID, ATTR_COMMAND: ["bad"]}, blocking=True, ) assert str(err.value) == "bad is not a known command"