"""Tests for the number platform.""" from unittest.mock import patch import pytest from homeassistant.components.number import ( ATTR_VALUE, DOMAIN as NUMBER_DOMAIN, SERVICE_SET_VALUE, ) from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant from homeassistant.exceptions import ServiceValidationError from .common import ENTITY_HUMIDIFIER_MIST_LEVEL from tests.common import MockConfigEntry async def test_set_mist_level_bad_range( hass: HomeAssistant, humidifier_config_entry: MockConfigEntry ) -> None: """Test set_mist_level invalid value.""" with ( pytest.raises(ServiceValidationError), patch( "pyvesync.vesyncfan.VeSyncHumid200300S.set_mist_level", return_value=True, ) as method_mock, ): await hass.services.async_call( NUMBER_DOMAIN, SERVICE_SET_VALUE, {ATTR_ENTITY_ID: ENTITY_HUMIDIFIER_MIST_LEVEL, ATTR_VALUE: "10"}, blocking=True, ) await hass.async_block_till_done() method_mock.assert_not_called() async def test_set_mist_level( hass: HomeAssistant, humidifier_config_entry: MockConfigEntry ) -> None: """Test set_mist_level usage.""" with patch( "pyvesync.vesyncfan.VeSyncHumid200300S.set_mist_level", return_value=True, ) as method_mock: await hass.services.async_call( NUMBER_DOMAIN, SERVICE_SET_VALUE, {ATTR_ENTITY_ID: ENTITY_HUMIDIFIER_MIST_LEVEL, ATTR_VALUE: "3"}, blocking=True, ) await hass.async_block_till_done() method_mock.assert_called_once() async def test_mist_level( hass: HomeAssistant, humidifier_config_entry: MockConfigEntry ) -> None: """Test the state of mist_level number entity.""" assert hass.states.get(ENTITY_HUMIDIFIER_MIST_LEVEL).state == "6"