async def _test_exclude_sources(opp, config0, expected_sources): """Test that sources (i.e., apps) are handled correctly when the `exclude_unnamed_apps` config parameter is provided.""" config = copy.deepcopy(config0) config[DOMAIN][CONF_APPS] = { "com.app.test1": "TEST 1", "com.app.test3": None, "com.app.test4": SHELL_RESPONSE_OFF, } patch_key, entity_id = _setup(config) with patchers.PATCH_ADB_DEVICE_TCP, patchers.patch_connect(True)[ patch_key ], patchers.patch_shell(SHELL_RESPONSE_OFF)[patch_key]: assert await async_setup_component(opp, DOMAIN, config) await opp.async_block_till_done() await opp.helpers.entity_component.async_update_entity(entity_id) state = opp.states.get(entity_id) assert state is not None assert state.state == STATE_OFF if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv": patch_update = patchers.patch_androidtv_update( "playing", "com.app.test1", [ "com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4", "com.app.test5", ], "hdmi", False, 1, "HW5", ) else: patch_update = patchers.patch_firetv_update( "playing", "com.app.test1", [ "com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4", "com.app.test5", ], "HW5", ) with patch_update: await opp.helpers.entity_component.async_update_entity(entity_id) state = opp.states.get(entity_id) assert state is not None assert state.state == STATE_PLAYING assert state.attributes["source"] == "TEST 1" assert sorted(state.attributes["source_list"]) == expected_sources return True
async def _test_sources(hass, config0): """Test that sources (i.e., apps) are handled correctly for Android TV and Fire TV devices.""" config = config0.copy() config[DOMAIN][CONF_APPS] = { "com.app.test1": "TEST 1", "com.app.test3": None, "com.app.test4": SHELL_RESPONSE_OFF, } patch_key, entity_id = _setup(config) with patchers.PATCH_ADB_DEVICE_TCP, patchers.patch_connect(True)[ patch_key ], patchers.patch_shell(SHELL_RESPONSE_OFF)[patch_key]: assert await async_setup_component(hass, DOMAIN, config) await hass.async_block_till_done() await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_OFF if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv": patch_update = patchers.patch_androidtv_update( "playing", "com.app.test1", ["com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4"], "hdmi", False, 1, ) else: patch_update = patchers.patch_firetv_update( "playing", "com.app.test1", ["com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4"], ) with patch_update: await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_PLAYING assert state.attributes["source"] == "TEST 1" assert sorted(state.attributes["source_list"]) == ["TEST 1", "com.app.test2"] if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv": patch_update = patchers.patch_androidtv_update( "playing", "com.app.test2", ["com.app.test2", "com.app.test1", "com.app.test3", "com.app.test4"], "hdmi", True, 0, ) else: patch_update = patchers.patch_firetv_update( "playing", "com.app.test2", ["com.app.test2", "com.app.test1", "com.app.test3", "com.app.test4"], ) with patch_update: await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_PLAYING assert state.attributes["source"] == "com.app.test2" assert sorted(state.attributes["source_list"]) == ["TEST 1", "com.app.test2"] return True
async def test_sources(hass, config0): """Test that sources (i.e., apps) are handled correctly for Android TV and Fire TV devices.""" config = copy.deepcopy(config0) config[DOMAIN].setdefault(CONF_OPTIONS, {}).update({ CONF_APPS: { "com.app.test1": "TEST 1", "com.app.test3": None, "com.app.test4": SHELL_RESPONSE_OFF, } }) patch_key, entity_id, config_entry = _setup(config) config_entry.add_to_hass(hass) with patchers.PATCH_ADB_DEVICE_TCP, patchers.patch_connect(True)[ patch_key], patchers.patch_shell(SHELL_RESPONSE_OFF)[patch_key]: with patchers.PATCH_DEVICE_PROPERTIES: assert await hass.config_entries.async_setup(config_entry.entry_id) await hass.async_block_till_done() await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_OFF if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv": patch_update = patchers.patch_androidtv_update( "playing", "com.app.test1", [ "com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4" ], "hdmi", False, 1, "HW5", ) else: patch_update = patchers.patch_firetv_update( "playing", "com.app.test1", [ "com.app.test1", "com.app.test2", "com.app.test3", "com.app.test4" ], "HW5", ) with patch_update: await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_PLAYING assert state.attributes["source"] == "TEST 1" assert sorted( state.attributes["source_list"]) == ["TEST 1", "com.app.test2"] if config[DOMAIN].get(CONF_DEVICE_CLASS) != "firetv": patch_update = patchers.patch_androidtv_update( "playing", "com.app.test2", [ "com.app.test2", "com.app.test1", "com.app.test3", "com.app.test4" ], "hdmi", True, 0, "HW5", ) else: patch_update = patchers.patch_firetv_update( "playing", "com.app.test2", [ "com.app.test2", "com.app.test1", "com.app.test3", "com.app.test4" ], "HW5", ) with patch_update: await hass.helpers.entity_component.async_update_entity(entity_id) state = hass.states.get(entity_id) assert state is not None assert state.state == STATE_PLAYING assert state.attributes["source"] == "com.app.test2" assert sorted( state.attributes["source_list"]) == ["TEST 1", "com.app.test2"]