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."""
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):
@ -9,9 +12,10 @@ class MockSirenEntity(SirenEntity):
_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."""
self._attr_supported_features = supported_features
self._attr_available_tones = available_tones
async def test_sync_turn_on(hass):
@ -34,3 +38,19 @@ async def test_sync_turn_off(hass):
await siren.async_turn_off()
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"})