async def test_modes(hass): """Test Mode trait.""" assert helpers.get_google_type(media_player.DOMAIN, None) is not None assert trait.ModesTrait.supported(media_player.DOMAIN, media_player.SUPPORT_SELECT_SOURCE, None) trt = trait.ModesTrait( hass, State('media_player.living_room', media_player.STATE_PLAYING, attributes={ media_player.ATTR_INPUT_SOURCE_LIST: ['media', 'game', 'chromecast', 'plex'], media_player.ATTR_INPUT_SOURCE: 'game' }), BASIC_CONFIG) attribs = trt.sync_attributes() assert attribs == { 'availableModes': [{ 'name': 'input source', 'name_values': [{ 'name_synonym': ['input source'], 'lang': 'en' }], 'settings': [{ 'setting_name': 'media', 'setting_values': [{ 'setting_synonym': ['media', 'media mode'], 'lang': 'en' }] }, { 'setting_name': 'game', 'setting_values': [{ 'setting_synonym': ['game', 'game mode'], 'lang': 'en' }] }, { 'setting_name': 'chromecast', 'setting_values': [{ 'setting_synonym': ['chromecast'], 'lang': 'en' }] }], 'ordered': False }] } assert trt.query_attributes() == { 'currentModeSettings': { 'source': 'game' }, 'on': True, 'online': True } assert trt.can_execute( trait.COMMAND_MODES, params={ 'updateModeSettings': { trt.HA_TO_GOOGLE.get(media_player.ATTR_INPUT_SOURCE): 'media' } }) calls = async_mock_service(hass, media_player.DOMAIN, media_player.SERVICE_SELECT_SOURCE) await trt.execute( trait.COMMAND_MODES, BASIC_DATA, { 'updateModeSettings': { trt.HA_TO_GOOGLE.get(media_player.ATTR_INPUT_SOURCE): 'media' } }, {}) assert len(calls) == 1 assert calls[0].data == { 'entity_id': 'media_player.living_room', 'source': 'media' }
async def test_modes(hass): """Test Mode trait.""" assert helpers.get_google_type(media_player.DOMAIN, None) is not None assert trait.ModesTrait.supported(media_player.DOMAIN, media_player.SUPPORT_SELECT_SOURCE, None) trt = trait.ModesTrait( hass, State( "media_player.living_room", media_player.STATE_PLAYING, attributes={ media_player.ATTR_INPUT_SOURCE_LIST: [ "media", "game", "chromecast", "plex", ], media_player.ATTR_INPUT_SOURCE: "game", }, ), BASIC_CONFIG, ) attribs = trt.sync_attributes() assert attribs == { "availableModes": [{ "name": "input source", "name_values": [{ "name_synonym": ["input source"], "lang": "en" }], "settings": [ { "setting_name": "media", "setting_values": [{ "setting_synonym": ["media", "media mode"], "lang": "en" }], }, { "setting_name": "game", "setting_values": [{ "setting_synonym": ["game", "game mode"], "lang": "en" }], }, { "setting_name": "chromecast", "setting_values": [{ "setting_synonym": ["chromecast"], "lang": "en" }], }, ], "ordered": False, }] } assert trt.query_attributes() == { "currentModeSettings": { "source": "game" }, "on": True, "online": True, } assert trt.can_execute( trait.COMMAND_MODES, params={ "updateModeSettings": { trt.HA_TO_GOOGLE.get(media_player.ATTR_INPUT_SOURCE): "media" } }, ) calls = async_mock_service(hass, media_player.DOMAIN, media_player.SERVICE_SELECT_SOURCE) await trt.execute( trait.COMMAND_MODES, BASIC_DATA, { "updateModeSettings": { trt.HA_TO_GOOGLE.get(media_player.ATTR_INPUT_SOURCE): "media" } }, {}, ) assert len(calls) == 1 assert calls[0].data == { "entity_id": "media_player.living_room", "source": "media" }