Handle special Plex library sections (#49525)

This commit is contained in:
jjlawren 2021-04-28 12:58:05 -05:00 committed by GitHub
parent 5e07ab17b2
commit 8c311cbaa0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 186 additions and 6 deletions

View file

@ -8,13 +8,24 @@ import plexapi
import requests
import homeassistant.components.plex.const as const
from homeassistant.components.plex.models import (
LIVE_TV_SECTION,
TRANSIENT_SECTION,
UNKNOWN_SECTION,
)
from homeassistant.config_entries import (
ENTRY_STATE_LOADED,
ENTRY_STATE_NOT_LOADED,
ENTRY_STATE_SETUP_ERROR,
ENTRY_STATE_SETUP_RETRY,
)
from homeassistant.const import CONF_TOKEN, CONF_URL, CONF_VERIFY_SSL, STATE_IDLE
from homeassistant.const import (
CONF_TOKEN,
CONF_URL,
CONF_VERIFY_SSL,
STATE_IDLE,
STATE_PLAYING,
)
from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util
@ -108,6 +119,66 @@ async def test_setup_with_photo_session(hass, entry, setup_plex_server):
assert sensor.state == "0"
async def test_setup_with_live_tv_session(hass, entry, setup_plex_server):
"""Test setup component with a Live TV session."""
await setup_plex_server(session_type="live_tv")
assert len(hass.config_entries.async_entries(const.DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED
await hass.async_block_till_done()
media_player = hass.states.get(
"media_player.plex_plex_for_android_tv_shield_android_tv"
)
assert media_player.state == STATE_PLAYING
assert media_player.attributes["media_library_title"] == LIVE_TV_SECTION
await wait_for_debouncer(hass)
sensor = hass.states.get("sensor.plex_plex_server_1")
assert sensor.state == "1"
async def test_setup_with_transient_session(hass, entry, setup_plex_server):
"""Test setup component with a transient session."""
await setup_plex_server(session_type="transient")
assert len(hass.config_entries.async_entries(const.DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED
await hass.async_block_till_done()
media_player = hass.states.get(
"media_player.plex_plex_for_android_tv_shield_android_tv"
)
assert media_player.state == STATE_PLAYING
assert media_player.attributes["media_library_title"] == TRANSIENT_SECTION
await wait_for_debouncer(hass)
sensor = hass.states.get("sensor.plex_plex_server_1")
assert sensor.state == "1"
async def test_setup_with_unknown_session(hass, entry, setup_plex_server):
"""Test setup component with an unknown session."""
await setup_plex_server(session_type="unknown")
assert len(hass.config_entries.async_entries(const.DOMAIN)) == 1
assert entry.state == ENTRY_STATE_LOADED
await hass.async_block_till_done()
media_player = hass.states.get(
"media_player.plex_plex_for_android_tv_shield_android_tv"
)
assert media_player.state == STATE_PLAYING
assert media_player.attributes["media_library_title"] == UNKNOWN_SECTION
await wait_for_debouncer(hass)
sensor = hass.states.get("sensor.plex_plex_server_1")
assert sensor.state == "1"
async def test_setup_when_certificate_changed(
hass,
requests_mock,