Exemplo n.º 1
0
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'
    }
Exemplo n.º 2
0
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"
    }