mirror of
https://github.com/home-assistant/core
synced 2024-10-05 19:57:25 +00:00
Add full test coverage to LaMetric (#80134)
This commit is contained in:
parent
9dd894a36e
commit
e3a3f93441
|
@ -660,7 +660,6 @@ omit =
|
|||
homeassistant/components/kostal_plenticore/switch.py
|
||||
homeassistant/components/kwb/sensor.py
|
||||
homeassistant/components/lacrosse/sensor.py
|
||||
homeassistant/components/lametric/notify.py
|
||||
homeassistant/components/lannouncer/notify.py
|
||||
homeassistant/components/lastfm/sensor.py
|
||||
homeassistant/components/launch_library/__init__.py
|
||||
|
|
124
tests/components/lametric/test_notify.py
Normal file
124
tests/components/lametric/test_notify.py
Normal file
|
@ -0,0 +1,124 @@
|
|||
"""Tests for the LaMetric notify platform."""
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from demetriek import (
|
||||
LaMetricError,
|
||||
Notification,
|
||||
NotificationIconType,
|
||||
NotificationPriority,
|
||||
NotificationSound,
|
||||
NotificationSoundCategory,
|
||||
Simple,
|
||||
)
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.notify import (
|
||||
ATTR_DATA,
|
||||
ATTR_MESSAGE,
|
||||
DOMAIN as NOTIFY_DOMAIN,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
NOTIFY_SERVICE = "frenck_s_lametric"
|
||||
|
||||
|
||||
async def test_notification_defaults(
|
||||
hass: HomeAssistant,
|
||||
init_integration: MockConfigEntry,
|
||||
mock_lametric: MagicMock,
|
||||
) -> None:
|
||||
"""Test the LaMetric notification defaults."""
|
||||
await hass.services.async_call(
|
||||
NOTIFY_DOMAIN,
|
||||
NOTIFY_SERVICE,
|
||||
{
|
||||
ATTR_MESSAGE: "Try not to become a man of success. Rather become a man of value",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
assert len(mock_lametric.notify.mock_calls) == 1
|
||||
|
||||
notification: Notification = mock_lametric.notify.mock_calls[0][2]["notification"]
|
||||
assert notification.icon_type is NotificationIconType.NONE
|
||||
assert notification.life_time is None
|
||||
assert notification.model.cycles == 1
|
||||
assert notification.model.sound is None
|
||||
assert notification.notification_id is None
|
||||
assert notification.notification_type is None
|
||||
assert notification.priority is NotificationPriority.INFO
|
||||
|
||||
assert len(notification.model.frames) == 1
|
||||
frame = notification.model.frames[0]
|
||||
assert type(frame) is Simple
|
||||
assert frame.icon == "a7956"
|
||||
assert (
|
||||
frame.text == "Try not to become a man of success. Rather become a man of value"
|
||||
)
|
||||
|
||||
|
||||
async def test_notification_options(
|
||||
hass: HomeAssistant,
|
||||
init_integration: MockConfigEntry,
|
||||
mock_lametric: MagicMock,
|
||||
) -> None:
|
||||
"""Test the LaMetric notification options."""
|
||||
await hass.services.async_call(
|
||||
NOTIFY_DOMAIN,
|
||||
NOTIFY_SERVICE,
|
||||
{
|
||||
ATTR_MESSAGE: "The secret of getting ahead is getting started",
|
||||
ATTR_DATA: {
|
||||
"icon": "1234",
|
||||
"sound": "positive1",
|
||||
"cycles": 3,
|
||||
"icon_type": "alert",
|
||||
"priority": "critical",
|
||||
},
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
assert len(mock_lametric.notify.mock_calls) == 1
|
||||
|
||||
notification: Notification = mock_lametric.notify.mock_calls[0][2]["notification"]
|
||||
assert notification.icon_type is NotificationIconType.ALERT
|
||||
assert notification.life_time is None
|
||||
assert notification.model.cycles == 3
|
||||
assert notification.model.sound is not None
|
||||
assert notification.model.sound.category is NotificationSoundCategory.NOTIFICATIONS
|
||||
assert notification.model.sound.sound is NotificationSound.POSITIVE1
|
||||
assert notification.model.sound.repeat == 1
|
||||
assert notification.notification_id is None
|
||||
assert notification.notification_type is None
|
||||
assert notification.priority is NotificationPriority.CRITICAL
|
||||
|
||||
assert len(notification.model.frames) == 1
|
||||
frame = notification.model.frames[0]
|
||||
assert type(frame) is Simple
|
||||
assert frame.icon == 1234
|
||||
assert frame.text == "The secret of getting ahead is getting started"
|
||||
|
||||
|
||||
async def test_notification_error(
|
||||
hass: HomeAssistant,
|
||||
init_integration: MockConfigEntry,
|
||||
mock_lametric: MagicMock,
|
||||
) -> None:
|
||||
"""Test the LaMetric notification error."""
|
||||
mock_lametric.notify.side_effect = LaMetricError
|
||||
|
||||
with pytest.raises(
|
||||
HomeAssistantError, match="Could not send LaMetric notification"
|
||||
):
|
||||
await hass.services.async_call(
|
||||
NOTIFY_DOMAIN,
|
||||
NOTIFY_SERVICE,
|
||||
{
|
||||
ATTR_MESSAGE: "It's failure that gives you the proper perspective on success",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
Loading…
Reference in a new issue