From cfc8e96b154f933eaf45bda17070483133d8043d Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Thu, 5 Nov 2020 07:41:22 -0800 Subject: [PATCH] Handle overriding of default apps for Android TV (#41893) * Handle overriding of default apps for Android TV * Fix comment --- .../components/androidtv/media_player.py | 6 ++++++ .../components/androidtv/test_media_player.py | 21 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/androidtv/media_player.py b/homeassistant/components/androidtv/media_player.py index 5133b5cd5bb..4d17b4ecdad 100644 --- a/homeassistant/components/androidtv/media_player.py +++ b/homeassistant/components/androidtv/media_player.py @@ -410,6 +410,12 @@ class ADBDevice(MediaPlayerEntity): self._app_name_to_id = { value: key for key, value in self._app_id_to_name.items() if value } + + # Make sure that apps overridden via the `apps` parameter are reflected + # in `self._app_name_to_id` + for key, value in apps.items(): + self._app_name_to_id[value] = key + self._get_sources = get_sources self._keys = KEYS diff --git a/tests/components/androidtv/test_media_player.py b/tests/components/androidtv/test_media_player.py index 0594a420852..f6d189cfbc2 100644 --- a/tests/components/androidtv/test_media_player.py +++ b/tests/components/androidtv/test_media_player.py @@ -3,6 +3,7 @@ import base64 import copy import logging +from androidtv.constants import APPS as ANDROIDTV_APPS from androidtv.exceptions import LockNotAcquiredException import pytest @@ -476,7 +477,11 @@ async def test_firetv_exclude_sources(hass): async def _test_select_source(hass, config0, source, expected_arg, method_patch): """Test that the methods for launching and stopping apps are called correctly when selecting a source.""" config = copy.deepcopy(config0) - config[DOMAIN][CONF_APPS] = {"com.app.test1": "TEST 1", "com.app.test3": None} + config[DOMAIN][CONF_APPS] = { + "com.app.test1": "TEST 1", + "com.app.test3": None, + "com.youtube.test": "YouTube", + } patch_key, entity_id = _setup(config) with patchers.PATCH_ADB_DEVICE_TCP, patchers.patch_connect(True)[ @@ -545,6 +550,20 @@ async def test_androidtv_select_source_launch_app_hidden(hass): ) +async def test_androidtv_select_source_overridden_app_name(hass): + """Test that when an app name is overridden via the `apps` configuration parameter, the app is launched correctly.""" + # Evidence that the default YouTube app ID will be overridden + assert "YouTube" in ANDROIDTV_APPS.values() + assert "com.youtube.test" not in ANDROIDTV_APPS + assert await _test_select_source( + hass, + CONFIG_ANDROIDTV_ADB_SERVER, + "YouTube", + "com.youtube.test", + patchers.PATCH_LAUNCH_APP, + ) + + async def test_androidtv_select_source_stop_app_id(hass): """Test that an app can be stopped using its app ID.""" assert await _test_select_source(