Bump pyvizio version and add additional device info (#31417)

* bump pyvizio version and add additional device info

* add patches for get_model and get_version

* change keywrod argument to positional for _test_service
This commit is contained in:
Raman Gupta 2020-02-03 02:41:58 -05:00 committed by GitHub
parent 744ae82933
commit ee927fbc9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 21 deletions

View file

@ -2,7 +2,7 @@
"domain": "vizio", "domain": "vizio",
"name": "Vizio SmartCast TV", "name": "Vizio SmartCast TV",
"documentation": "https://www.home-assistant.io/integrations/vizio", "documentation": "https://www.home-assistant.io/integrations/vizio",
"requirements": ["pyvizio==0.1.16"], "requirements": ["pyvizio==0.1.19"],
"dependencies": [], "dependencies": [],
"codeowners": ["@raman325"], "codeowners": ["@raman325"],
"config_flow": true, "config_flow": true,

View file

@ -107,9 +107,17 @@ class VizioDevice(MediaPlayerDevice):
self._max_volume = float(self._device.get_max_volume()) self._max_volume = float(self._device.get_max_volume())
self._icon = ICON[device_class] self._icon = ICON[device_class]
self._available = True self._available = True
self._model = None
self._sw_version = None
async def async_update(self) -> None: async def async_update(self) -> None:
"""Retrieve latest state of the device.""" """Retrieve latest state of the device."""
if not self._model:
self._model = await self._device.get_model()
if not self._sw_version:
self._sw_version = await self._device.get_version()
is_on = await self._device.get_power_state(log_api_exception=False) is_on = await self._device.get_power_state(log_api_exception=False)
if is_on is None: if is_on is None:
@ -141,9 +149,9 @@ class VizioDevice(MediaPlayerDevice):
input_ = await self._device.get_current_input(log_api_exception=False) input_ = await self._device.get_current_input(log_api_exception=False)
if input_ is not None: if input_ is not None:
self._current_input = input_.meta_name self._current_input = input_
inputs = await self._device.get_inputs(log_api_exception=False) inputs = await self._device.get_inputs_list(log_api_exception=False)
if inputs is not None: if inputs is not None:
self._available_inputs = [input_.name for input_ in inputs] self._available_inputs = [input_.name for input_ in inputs]
@ -235,6 +243,8 @@ class VizioDevice(MediaPlayerDevice):
"identifiers": {(DOMAIN, self._config_entry.unique_id)}, "identifiers": {(DOMAIN, self._config_entry.unique_id)},
"name": self.name, "name": self.name,
"manufacturer": "VIZIO", "manufacturer": "VIZIO",
"model": self._model,
"sw_version": self._sw_version,
} }
@property @property
@ -267,7 +277,7 @@ class VizioDevice(MediaPlayerDevice):
async def async_select_source(self, source: str) -> None: async def async_select_source(self, source: str) -> None:
"""Select input source.""" """Select input source."""
await self._device.input_switch(source) await self._device.set_input(source)
async def async_volume_up(self) -> None: async def async_volume_up(self) -> None:
"""Increase volume of the device.""" """Increase volume of the device."""

View file

@ -1693,7 +1693,7 @@ pyversasense==0.0.6
pyvesync==1.1.0 pyvesync==1.1.0
# homeassistant.components.vizio # homeassistant.components.vizio
pyvizio==0.1.16 pyvizio==0.1.19
# homeassistant.components.velux # homeassistant.components.velux
pyvlx==0.2.12 pyvlx==0.2.12

View file

@ -570,7 +570,7 @@ pyvera==0.3.7
pyvesync==1.1.0 pyvesync==1.1.0
# homeassistant.components.vizio # homeassistant.components.vizio
pyvizio==0.1.16 pyvizio==0.1.19
# homeassistant.components.html5 # homeassistant.components.html5
pywebpush==1.9.2 pywebpush==1.9.2

View file

@ -1,10 +1,9 @@
"""Configure py.test.""" """Configure py.test."""
from asynctest import patch from asynctest import patch
import pytest import pytest
from pyvizio.const import DEVICE_CLASS_SPEAKER from pyvizio.const import DEVICE_CLASS_SPEAKER, MAX_VOLUME
from pyvizio.vizio import MAX_VOLUME
from .const import CURRENT_INPUT, INPUT_LIST, UNIQUE_ID from .const import CURRENT_INPUT, INPUT_LIST, MODEL, UNIQUE_ID, VERSION
class MockInput: class MockInput:
@ -91,12 +90,18 @@ def vizio_update_fixture():
return_value=int(MAX_VOLUME[DEVICE_CLASS_SPEAKER] / 2), return_value=int(MAX_VOLUME[DEVICE_CLASS_SPEAKER] / 2),
), patch( ), patch(
"homeassistant.components.vizio.media_player.VizioAsync.get_current_input", "homeassistant.components.vizio.media_player.VizioAsync.get_current_input",
return_value=MockInput(CURRENT_INPUT), return_value=CURRENT_INPUT,
), patch( ), patch(
"homeassistant.components.vizio.media_player.VizioAsync.get_inputs", "homeassistant.components.vizio.media_player.VizioAsync.get_inputs_list",
return_value=get_mock_inputs(INPUT_LIST), return_value=get_mock_inputs(INPUT_LIST),
), patch( ), patch(
"homeassistant.components.vizio.media_player.VizioAsync.get_power_state", "homeassistant.components.vizio.media_player.VizioAsync.get_power_state",
return_value=True, return_value=True,
), patch(
"homeassistant.components.vizio.media_player.VizioAsync.get_model",
return_value=MODEL,
), patch(
"homeassistant.components.vizio.media_player.VizioAsync.get_version",
return_value=VERSION,
): ):
yield yield

View file

@ -26,6 +26,8 @@ HOST2 = "192.168.1.2:9000"
ACCESS_TOKEN = "deadbeef" ACCESS_TOKEN = "deadbeef"
VOLUME_STEP = 2 VOLUME_STEP = 2
UNIQUE_ID = "testid" UNIQUE_ID = "testid"
MODEL = "model"
VERSION = "version"
MOCK_USER_VALID_TV_CONFIG = { MOCK_USER_VALID_TV_CONFIG = {
CONF_NAME: NAME, CONF_NAME: NAME,

View file

@ -7,8 +7,8 @@ import pytest
from pyvizio.const import ( from pyvizio.const import (
DEVICE_CLASS_SPEAKER as VIZIO_DEVICE_CLASS_SPEAKER, DEVICE_CLASS_SPEAKER as VIZIO_DEVICE_CLASS_SPEAKER,
DEVICE_CLASS_TV as VIZIO_DEVICE_CLASS_TV, DEVICE_CLASS_TV as VIZIO_DEVICE_CLASS_TV,
MAX_VOLUME,
) )
from pyvizio.vizio import MAX_VOLUME
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE,
@ -111,7 +111,7 @@ async def _test_service(
hass: HomeAssistantType, hass: HomeAssistantType,
vizio_func_name: str, vizio_func_name: str,
ha_service_name: str, ha_service_name: str,
additional_service_data: dict = None, additional_service_data: dict,
*args, *args,
**kwargs, **kwargs,
) -> None: ) -> None:
@ -194,8 +194,8 @@ async def test_services(
"""Test all Vizio media player entity services.""" """Test all Vizio media player entity services."""
await _test_setup(hass, DEVICE_CLASS_TV, True) await _test_setup(hass, DEVICE_CLASS_TV, True)
await _test_service(hass, "pow_on", SERVICE_TURN_ON) await _test_service(hass, "pow_on", SERVICE_TURN_ON, None)
await _test_service(hass, "pow_off", SERVICE_TURN_OFF) await _test_service(hass, "pow_off", SERVICE_TURN_OFF, None)
await _test_service( await _test_service(
hass, "mute_on", SERVICE_VOLUME_MUTE, {ATTR_MEDIA_VOLUME_MUTED: True} hass, "mute_on", SERVICE_VOLUME_MUTE, {ATTR_MEDIA_VOLUME_MUTED: True}
) )
@ -203,18 +203,18 @@ async def test_services(
hass, "mute_off", SERVICE_VOLUME_MUTE, {ATTR_MEDIA_VOLUME_MUTED: False} hass, "mute_off", SERVICE_VOLUME_MUTE, {ATTR_MEDIA_VOLUME_MUTED: False}
) )
await _test_service( await _test_service(
hass, "input_switch", SERVICE_SELECT_SOURCE, {ATTR_INPUT_SOURCE: "USB"}, "USB" hass, "set_input", SERVICE_SELECT_SOURCE, {ATTR_INPUT_SOURCE: "USB"}, "USB"
) )
await _test_service(hass, "vol_up", SERVICE_VOLUME_UP) await _test_service(hass, "vol_up", SERVICE_VOLUME_UP, None)
await _test_service(hass, "vol_down", SERVICE_VOLUME_DOWN) await _test_service(hass, "vol_down", SERVICE_VOLUME_DOWN, None)
await _test_service( await _test_service(
hass, "vol_up", SERVICE_VOLUME_SET, {ATTR_MEDIA_VOLUME_LEVEL: 1} hass, "vol_up", SERVICE_VOLUME_SET, {ATTR_MEDIA_VOLUME_LEVEL: 1}
) )
await _test_service( await _test_service(
hass, "vol_down", SERVICE_VOLUME_SET, {ATTR_MEDIA_VOLUME_LEVEL: 0} hass, "vol_down", SERVICE_VOLUME_SET, {ATTR_MEDIA_VOLUME_LEVEL: 0}
) )
await _test_service(hass, "ch_up", SERVICE_MEDIA_NEXT_TRACK) await _test_service(hass, "ch_up", SERVICE_MEDIA_NEXT_TRACK, None)
await _test_service(hass, "ch_down", SERVICE_MEDIA_PREVIOUS_TRACK) await _test_service(hass, "ch_down", SERVICE_MEDIA_PREVIOUS_TRACK, None)
async def test_options_update( async def test_options_update(
@ -231,7 +231,7 @@ async def test_options_update(
entry=config_entry, options=new_options, entry=config_entry, options=new_options,
) )
assert config_entry.options == updated_options assert config_entry.options == updated_options
await _test_service(hass, "vol_up", SERVICE_VOLUME_UP, num=VOLUME_STEP) await _test_service(hass, "vol_up", SERVICE_VOLUME_UP, None, num=VOLUME_STEP)
async def _test_update_availability_switch( async def _test_update_availability_switch(