1
0
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:
Matt Schmitt
2018-05-25 05:37:20 -04:00
committed by cdce8p
parent d53a8c0823
commit a9f19a16ee
7 changed files with 354 additions and 11 deletions

View File

@@ -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."""