Пример #1
0
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
    }
Пример #2
0
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
    }