From 8651208763ad60bff8d4c266497504ef4f762d0f Mon Sep 17 00:00:00 2001 From: Daniel Roussel Date: Wed, 11 Sep 2024 21:00:55 +0200 Subject: [PATCH] add tests for `ring.number` --- tests/components/ring/test_number.py | 94 ++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 tests/components/ring/test_number.py diff --git a/tests/components/ring/test_number.py b/tests/components/ring/test_number.py new file mode 100644 index 00000000000..bd910fe339a --- /dev/null +++ b/tests/components/ring/test_number.py @@ -0,0 +1,94 @@ +"""The tests for the Ring switch platform.""" + +import pytest + +from homeassistant.const import Platform +from homeassistant.core import HomeAssistant +from homeassistant.helpers import entity_registry as er + +from .common import setup_platform + + +@pytest.mark.parametrize( + ("entity", "unique_id"), + [ + ("number.downstairs_volume", "123456-volume"), + ("number.front_door_volume", "987654-volume"), + ("number.ingress_doorbell_volume", "185036587-doorbell_volume"), + ("number.ingress_mic_volume", "185036587-mic_volume"), + ("number.ingress_voice_volume", "185036587-voice_volume"), + ], +) +async def test_entity_registry( + hass: HomeAssistant, + entity_registry: er.EntityRegistry, + mock_ring_client, + entity, + unique_id, +) -> None: + """Tests that the devices are registered in the entity registry.""" + await setup_platform(hass, Platform.NUMBER) + + entry = entity_registry.async_get(entity) + assert entry is not None and entry.unique_id == unique_id + + +@pytest.mark.parametrize( + ("entity", "initial_state"), + [ + ("number.downstairs_volume", "2.0"), + ("number.front_door_volume", "1.0"), + ("number.ingress_doorbell_volume", "8.0"), + ("number.ingress_mic_volume", "11.0"), + ("number.ingress_voice_volume", "11.0"), + ], +) +async def test_initial_state( + hass: HomeAssistant, + mock_ring_client, + entity, + initial_state, +) -> None: + """Tests that the initial state of a device is correct.""" + await setup_platform(hass, Platform.NUMBER) + + state = hass.states.get(entity) + assert state is not None and state.state == initial_state + + +@pytest.mark.parametrize( + ("entity", "new_value"), + [ + ("number.downstairs_volume", "4.0"), + ("number.front_door_volume", "3.0"), + ("number.ingress_doorbell_volume", "7.0"), + ("number.ingress_mic_volume", "2.0"), + ("number.ingress_voice_volume", "5.0"), + ], +) +async def test_volume_can_be_changed( + hass: HomeAssistant, + mock_ring_client, + entity, + new_value, +) -> None: + """Tests the volume can be changed correctly.""" + await setup_platform(hass, Platform.NUMBER) + + state = hass.states.get(entity) + assert state is not None + old_value = state.state + + # otherwise this test would be pointless + assert old_value != new_value + + await hass.services.async_call( + "number", + "set_value", + {"entity_id": entity, "value": new_value}, + blocking=True, + ) + + await hass.async_block_till_done() + state = hass.states.get(entity) + assert state is not None and state.state == new_value