mirror of
https://github.com/home-assistant/core.git
synced 2025-12-23 12:29:55 +00:00
Add HomeKit support for media players (#14446)
This commit is contained in:
@@ -2,16 +2,20 @@
|
||||
import pytest
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.homekit.const import HOMEKIT_NOTIFY_ID
|
||||
from homeassistant.core import State
|
||||
from homeassistant.components.homekit.const import (
|
||||
HOMEKIT_NOTIFY_ID, ON_OFF, PLAY_PAUSE, PLAY_STOP, TOGGLE_MUTE)
|
||||
from homeassistant.components.homekit.util import (
|
||||
convert_to_float, density_to_air_quality, dismiss_setup_message,
|
||||
show_setup_message, temperature_to_homekit, temperature_to_states)
|
||||
show_setup_message, temperature_to_homekit, temperature_to_states,
|
||||
validate_media_player_modes)
|
||||
from homeassistant.components.homekit.util import validate_entity_config \
|
||||
as vec
|
||||
from homeassistant.components.persistent_notification import (
|
||||
ATTR_MESSAGE, ATTR_NOTIFICATION_ID, DOMAIN)
|
||||
from homeassistant.const import (
|
||||
ATTR_CODE, CONF_NAME, STATE_UNKNOWN, TEMP_CELSIUS, TEMP_FAHRENHEIT)
|
||||
ATTR_CODE, ATTR_SUPPORTED_FEATURES, CONF_MODE, CONF_NAME, STATE_UNKNOWN,
|
||||
TEMP_CELSIUS, TEMP_FAHRENHEIT)
|
||||
|
||||
from tests.common import async_mock_service
|
||||
|
||||
@@ -20,7 +24,8 @@ def test_validate_entity_config():
|
||||
"""Test validate entities."""
|
||||
configs = [{'invalid_entity_id': {}}, {'demo.test': 1},
|
||||
{'demo.test': 'test'}, {'demo.test': [1, 2]},
|
||||
{'demo.test': None}, {'demo.test': {CONF_NAME: None}}]
|
||||
{'demo.test': None}, {'demo.test': {CONF_NAME: None}},
|
||||
{'media_player.test': {CONF_MODE: 'invalid_mode'}}]
|
||||
|
||||
for conf in configs:
|
||||
with pytest.raises(vol.Invalid):
|
||||
@@ -39,6 +44,25 @@ def test_validate_entity_config():
|
||||
assert vec({'lock.demo': {ATTR_CODE: '1234'}}) == \
|
||||
{'lock.demo': {ATTR_CODE: '1234'}}
|
||||
|
||||
assert vec({'media_player.demo': {}}) == \
|
||||
{'media_player.demo': {CONF_MODE: []}}
|
||||
assert vec({'media_player.demo': {CONF_MODE: [ON_OFF]}}) == \
|
||||
{'media_player.demo': {CONF_MODE: [ON_OFF]}}
|
||||
|
||||
|
||||
def test_validate_media_player_modes():
|
||||
"""Test validate modes for media players."""
|
||||
config = {}
|
||||
attrs = {ATTR_SUPPORTED_FEATURES: 20873}
|
||||
entity_state = State('media_player.demo', 'on', attrs)
|
||||
validate_media_player_modes(entity_state, config)
|
||||
assert config == {CONF_MODE: [ON_OFF, PLAY_PAUSE, PLAY_STOP, TOGGLE_MUTE]}
|
||||
|
||||
entity_state = State('media_player.demo', 'on')
|
||||
config = {CONF_MODE: [ON_OFF]}
|
||||
with pytest.raises(vol.Invalid):
|
||||
validate_media_player_modes(entity_state, config)
|
||||
|
||||
|
||||
def test_convert_to_float():
|
||||
"""Test convert_to_float method."""
|
||||
|
||||
Reference in New Issue
Block a user