Add missing test coverage for sirens (#53014)

This commit is contained in:
Raman Gupta 2021-07-14 14:04:04 -04:00 committed by GitHub
parent 7e16d38fc8
commit 4d711898c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,10 @@
"""The tests for the siren component.""" """The tests for the siren component."""
from unittest.mock import MagicMock from unittest.mock import MagicMock
from homeassistant.components.siren import SirenEntity import pytest
from homeassistant.components.siren import SirenEntity, process_turn_on_params
from homeassistant.components.siren.const import SUPPORT_TONES
class MockSirenEntity(SirenEntity): class MockSirenEntity(SirenEntity):
@ -9,9 +12,10 @@ class MockSirenEntity(SirenEntity):
_attr_is_on = True _attr_is_on = True
def __init__(self, supported_features: int = 0) -> None: def __init__(self, supported_features=0, available_tones=None):
"""Initialize mock siren entity.""" """Initialize mock siren entity."""
self._attr_supported_features = supported_features self._attr_supported_features = supported_features
self._attr_available_tones = available_tones
async def test_sync_turn_on(hass): async def test_sync_turn_on(hass):
@ -34,3 +38,19 @@ async def test_sync_turn_off(hass):
await siren.async_turn_off() await siren.async_turn_off()
assert siren.turn_off.called assert siren.turn_off.called
async def test_no_available_tones(hass):
"""Test ValueError when siren advertises tones but has no available_tones."""
siren = MockSirenEntity(SUPPORT_TONES)
siren.hass = hass
with pytest.raises(ValueError):
process_turn_on_params(siren, {"tone": "test"})
async def test_missing_tones(hass):
"""Test ValueError when setting a tone that is missing from available_tones."""
siren = MockSirenEntity(SUPPORT_TONES, ["a", "b"])
siren.hass = hass
with pytest.raises(ValueError):
process_turn_on_params(siren, {"tone": "test"})