From 6dc1414b69db0782627909ceb8623f03ffb3a132 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 4 Apr 2021 17:26:55 -1000 Subject: [PATCH] Fix sonos volume always showing 0 (#48685) --- homeassistant/components/sonos/media_player.py | 4 ++-- tests/components/sonos/conftest.py | 4 ++++ tests/components/sonos/test_media_player.py | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sonos/media_player.py b/homeassistant/components/sonos/media_player.py index 6d594b906eac57..6e0fe6c7293b4e 100644 --- a/homeassistant/components/sonos/media_player.py +++ b/homeassistant/components/sonos/media_player.py @@ -885,9 +885,9 @@ def async_update_content(self, event: Event | None = None) -> None: self.async_write_ha_state() @property - def volume_level(self) -> int | None: + def volume_level(self) -> float | None: """Volume level of the media player (0..1).""" - return self._player_volume and int(self._player_volume / 100) + return self._player_volume and self._player_volume / 100 @property def is_volume_muted(self) -> bool | None: diff --git a/tests/components/sonos/conftest.py b/tests/components/sonos/conftest.py index 7b6393559dc772..3562d991e985bd 100644 --- a/tests/components/sonos/conftest.py +++ b/tests/components/sonos/conftest.py @@ -31,6 +31,10 @@ def soco_fixture(music_library, speaker_info, dummy_soco_service): mock_soco.renderingControl = dummy_soco_service mock_soco.zoneGroupTopology = dummy_soco_service mock_soco.contentDirectory = dummy_soco_service + mock_soco.mute = False + mock_soco.night_mode = True + mock_soco.dialog_mode = True + mock_soco.volume = 19 yield mock_soco diff --git a/tests/components/sonos/test_media_player.py b/tests/components/sonos/test_media_player.py index 466a0df5905e22..d5b0158d6c4463 100644 --- a/tests/components/sonos/test_media_player.py +++ b/tests/components/sonos/test_media_player.py @@ -2,6 +2,7 @@ import pytest from homeassistant.components.sonos import DOMAIN, media_player +from homeassistant.const import STATE_IDLE from homeassistant.core import Context from homeassistant.exceptions import Unauthorized from homeassistant.helpers import device_registry as dr @@ -59,3 +60,17 @@ async def test_device_registry(hass, config_entry, config, soco): assert reg_device.manufacturer == "Sonos" assert reg_device.suggested_area == "Zone A" assert reg_device.name == "Zone A" + + +async def test_entity_basic(hass, config_entry, discover): + """Test basic state and attributes.""" + await setup_platform(hass, config_entry, {}) + + state = hass.states.get("media_player.zone_a") + assert state.state == STATE_IDLE + attributes = state.attributes + assert attributes["friendly_name"] == "Zone A" + assert attributes["is_volume_muted"] is False + assert attributes["night_sound"] is True + assert attributes["speech_enhance"] is True + assert attributes["volume_level"] == 0.19