92 lines
3.1 KiB
Python
92 lines
3.1 KiB
Python
"""The tests for the notify.group platform."""
|
|
import asyncio
|
|
import unittest
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import homeassistant.components.demo.notify as demo
|
|
import homeassistant.components.group.notify as group
|
|
import homeassistant.components.notify as notify
|
|
from homeassistant.setup import setup_component
|
|
|
|
from tests.common import assert_setup_component, get_test_home_assistant
|
|
|
|
|
|
class TestNotifyGroup(unittest.TestCase):
|
|
"""Test the notify.group platform."""
|
|
|
|
def setUp(self): # pylint: disable=invalid-name
|
|
"""Set up things to be run when tests are started."""
|
|
self.hass = get_test_home_assistant()
|
|
self.events = []
|
|
self.service1 = demo.DemoNotificationService(self.hass)
|
|
self.service2 = demo.DemoNotificationService(self.hass)
|
|
|
|
self.service1.send_message = MagicMock(autospec=True)
|
|
self.service2.send_message = MagicMock(autospec=True)
|
|
|
|
def mock_get_service(hass, config, discovery_info=None):
|
|
if config["name"] == "demo1":
|
|
return self.service1
|
|
return self.service2
|
|
|
|
with assert_setup_component(2, notify.DOMAIN), patch.object(
|
|
demo, "get_service", mock_get_service
|
|
):
|
|
setup_component(
|
|
self.hass,
|
|
notify.DOMAIN,
|
|
{
|
|
"notify": [
|
|
{"name": "demo1", "platform": "demo"},
|
|
{"name": "demo2", "platform": "demo"},
|
|
]
|
|
},
|
|
)
|
|
|
|
self.service = asyncio.run_coroutine_threadsafe(
|
|
group.async_get_service(
|
|
self.hass,
|
|
{
|
|
"services": [
|
|
{"service": "demo1"},
|
|
{
|
|
"service": "demo2",
|
|
"data": {
|
|
"target": "unnamed device",
|
|
"data": {"test": "message"},
|
|
},
|
|
},
|
|
]
|
|
},
|
|
),
|
|
self.hass.loop,
|
|
).result()
|
|
|
|
assert self.service is not None
|
|
|
|
def tearDown(self): # pylint: disable=invalid-name
|
|
"""Stop everything that was started."""
|
|
self.hass.stop()
|
|
|
|
def test_send_message_with_data(self):
|
|
"""Test sending a message with to a notify group."""
|
|
asyncio.run_coroutine_threadsafe(
|
|
self.service.async_send_message(
|
|
"Hello", title="Test notification", data={"hello": "world"}
|
|
),
|
|
self.hass.loop,
|
|
).result()
|
|
self.hass.block_till_done()
|
|
|
|
assert self.service1.send_message.mock_calls[0][1][0] == "Hello"
|
|
assert self.service1.send_message.mock_calls[0][2] == {
|
|
"title": "Test notification",
|
|
"data": {"hello": "world"},
|
|
}
|
|
assert self.service2.send_message.mock_calls[0][1][0] == "Hello"
|
|
assert self.service2.send_message.mock_calls[0][2] == {
|
|
"target": ["unnamed device"],
|
|
"title": "Test notification",
|
|
"data": {"hello": "world", "test": "message"},
|
|
}
|