From 0d5e2795093a51567d61cd84cd0158bfcef40b0e Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Fri, 7 Aug 2020 22:29:54 -0400 Subject: [PATCH] Standardize Vizio update service schema (#38636) * update voluptuous schema to match standards and to handle data transformations * improve test --- homeassistant/components/vizio/const.py | 6 +++--- homeassistant/components/vizio/media_player.py | 4 +--- tests/components/vizio/test_media_player.py | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/vizio/const.py b/homeassistant/components/vizio/const.py index 6c8a46c358f..e0b60769e45 100644 --- a/homeassistant/components/vizio/const.py +++ b/homeassistant/components/vizio/const.py @@ -34,9 +34,9 @@ ATTR_SETTING_NAME = "setting_name" ATTR_NEW_VALUE = "new_value" UPDATE_SETTING_SCHEMA = { - vol.Required(ATTR_SETTING_TYPE): cv.string, - vol.Required(ATTR_SETTING_NAME): cv.string, - vol.Required(ATTR_NEW_VALUE): vol.Or(vol.Coerce(int), cv.string), + vol.Required(ATTR_SETTING_TYPE): vol.All(cv.string, vol.Lower, cv.slugify), + vol.Required(ATTR_SETTING_NAME): vol.All(cv.string, vol.Lower, cv.slugify), + vol.Required(ATTR_NEW_VALUE): vol.Any(vol.Coerce(int), cv.string), } CONF_ADDITIONAL_CONFIGS = "additional_configs" diff --git a/homeassistant/components/vizio/media_player.py b/homeassistant/components/vizio/media_player.py index 28201b51db7..408e37f011b 100644 --- a/homeassistant/components/vizio/media_player.py +++ b/homeassistant/components/vizio/media_player.py @@ -291,9 +291,7 @@ class VizioDevice(MediaPlayerEntity): ) -> None: """Update a setting when update_setting service is called.""" await self._device.set_setting( - setting_type.lower().replace(" ", "_"), - setting_name.lower().replace(" ", "_"), - new_value, + setting_type, setting_name, new_value, ) async def async_added_to_hass(self): diff --git a/tests/components/vizio/test_media_player.py b/tests/components/vizio/test_media_player.py index a4ef7c1a1ac..c0d780ed7ba 100644 --- a/tests/components/vizio/test_media_player.py +++ b/tests/components/vizio/test_media_player.py @@ -387,12 +387,26 @@ async def test_services( SERVICE_SELECT_SOUND_MODE, {ATTR_SOUND_MODE: "Music"}, ) + # Test that the update_setting service does config validation/transformation correctly + await _test_service( + hass, + DOMAIN, + "set_setting", + SERVICE_UPDATE_SETTING, + {"setting_type": "Audio", "setting_name": "AV Delay", "new_value": "0"}, + "audio", + "av_delay", + 0, + ) await _test_service( hass, DOMAIN, "set_setting", SERVICE_UPDATE_SETTING, {"setting_type": "Audio", "setting_name": "EQ", "new_value": "Music"}, + "audio", + "eq", + "Music", )