async def test_volume_media_player_relative(hass): """Test volume trait support for media player domain.""" trt = trait.VolumeTrait( hass, State( 'media_player.bla', media_player.STATE_PLAYING, { media_player.ATTR_MEDIA_VOLUME_LEVEL: .3, media_player.ATTR_MEDIA_VOLUME_MUTED: False, }), BASIC_CONFIG) assert trt.sync_attributes() == {} assert trt.query_attributes() == {'currentVolume': 30, 'isMuted': False} calls = async_mock_service(hass, media_player.DOMAIN, media_player.SERVICE_VOLUME_SET) await trt.execute(trait.COMMAND_VOLUME_RELATIVE, BASIC_DATA, { 'volumeRelativeLevel': 20, 'relativeSteps': 2 }, {}) assert len(calls) == 1 assert calls[0].data == { ATTR_ENTITY_ID: 'media_player.bla', media_player.ATTR_MEDIA_VOLUME_LEVEL: .5 }
async def test_volume_media_player(hass): """Test volume trait support for media player domain.""" assert helpers.get_google_type(media_player.DOMAIN, None) is not None assert trait.VolumeTrait.supported( media_player.DOMAIN, media_player.SUPPORT_VOLUME_SET | media_player.SUPPORT_VOLUME_MUTE, None) trt = trait.VolumeTrait( hass, State( 'media_player.bla', media_player.STATE_PLAYING, { media_player.ATTR_MEDIA_VOLUME_LEVEL: .3, media_player.ATTR_MEDIA_VOLUME_MUTED: False, }), BASIC_CONFIG) assert trt.sync_attributes() == {} assert trt.query_attributes() == {'currentVolume': 30, 'isMuted': False} calls = async_mock_service(hass, media_player.DOMAIN, media_player.SERVICE_VOLUME_SET) await trt.execute(trait.COMMAND_SET_VOLUME, BASIC_DATA, {'volumeLevel': 60}, {}) assert len(calls) == 1 assert calls[0].data == { ATTR_ENTITY_ID: 'media_player.bla', media_player.ATTR_MEDIA_VOLUME_LEVEL: .6 }