From 57c0f961185b7fbd7ae2cb303851c6c448370f86 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Tue, 12 Jan 2016 21:21:41 -0500 Subject: [PATCH] Renamed update_state to update in universal media player Renamed update_state method in universal media player to update so that it would be called by HA when the state was being published. Moved the update_ha_state to a function inside of __init__. Updated the tests accordingly. --- .../components/media_player/universal.py | 16 ++++++-- .../components/media_player/test_universal.py | 40 +++++++++---------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index 8bf689d3fd8..09bb12ec332 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -149,11 +149,15 @@ class UniversalMediaPlayer(MediaPlayerDevice): self._attrs = attributes self._child_state = None + def on_dependency_update(*_): + """ update ha state when dependencies update """ + self.update_ha_state(True) + depend = copy(children) for entity in attributes.values(): depend.append(entity[0]) - track_state_change(hass, depend, self.update_state) + track_state_change(hass, depend, on_dependency_update) def _entity_lkp(self, entity_id, state_attr=None): """ Looks up an entity state from hass """ @@ -424,7 +428,11 @@ class UniversalMediaPlayer(MediaPlayerDevice): """ media_play_pause media player. """ self._call_service(SERVICE_MEDIA_PLAY_PAUSE) - def update_state(self, *_): + def update(self): """ event to trigger a state update in HA """ - self._cache_active_child_state() - self.update_ha_state(True) + for child_name in self._children: + child_state = self.hass.states.get(child_name) + if child_state and child_state.state not in OFF_STATES: + self._child_state = child_state + return + self._child_state = None diff --git a/tests/components/media_player/test_universal.py b/tests/components/media_player/test_universal.py index 511451d53a0..eca863b935e 100644 --- a/tests/components/media_player/test_universal.py +++ b/tests/components/media_player/test_universal.py @@ -174,25 +174,25 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertEqual(None, ump._child_state) self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(self.mock_mp_1.entity_id, ump._child_state.entity_id) self.mock_mp_2._state = STATE_PLAYING self.mock_mp_2.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(self.mock_mp_1.entity_id, ump._child_state.entity_id) self.mock_mp_1._state = STATE_OFF self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(self.mock_mp_2.entity_id, ump._child_state.entity_id) @@ -212,13 +212,13 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertTrue(ump.state, STATE_OFF) self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(STATE_PLAYING, ump.state) def test_state_with_children_and_attrs(self): @@ -228,21 +228,21 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertEqual(ump.state, STATE_OFF) self.hass.states.set(self.mock_state_switch_id, STATE_ON) - ump.update_state() + ump.update() self.assertEqual(ump.state, STATE_ON) self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(ump.state, STATE_PLAYING) self.hass.states.set(self.mock_state_switch_id, STATE_OFF) - ump.update_state() + ump.update() self.assertEqual(ump.state, STATE_OFF) def test_volume_level(self): @@ -252,18 +252,18 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertEqual(None, ump.volume_level) self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(0, ump.volume_level) self.mock_mp_1._volume_level = 1 self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(1, ump.volume_level) def test_is_volume_muted_children_only(self): @@ -273,18 +273,18 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertFalse(ump.is_volume_muted) self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertFalse(ump.is_volume_muted) self.mock_mp_1._is_volume_muted = True self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertTrue(ump.is_volume_muted) def test_is_volume_muted_children_and_attr(self): @@ -306,14 +306,14 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.assertEqual(0, ump.supported_media_commands) self.mock_mp_1._supported_media_commands = 512 self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() self.assertEqual(512, ump.supported_media_commands) def test_supported_media_commands_children_and_cmds(self): @@ -328,13 +328,13 @@ class TestMediaPlayer(unittest.TestCase): ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) - ump.update_state() + ump.update() self.mock_mp_1._supported_media_commands = \ universal.SUPPORT_VOLUME_SET self.mock_mp_1._state = STATE_PLAYING self.mock_mp_1.update_ha_state() - ump.update_state() + ump.update() check_flags = universal.SUPPORT_TURN_ON | universal.SUPPORT_TURN_OFF \ | universal.SUPPORT_VOLUME_STEP | universal.SUPPORT_VOLUME_MUTE