Beispiel #1
0
    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
        self.addCleanup(self.tear_down_cleanup)
Beispiel #2
0
    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), \
                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 = 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
async def test_send_message_with_data(hass):
    """Test sending a message with to a notify group."""
    service1 = demo.DemoNotificationService(hass)
    service2 = demo.DemoNotificationService(hass)

    service1.send_message = MagicMock(autospec=True)
    service2.send_message = MagicMock(autospec=True)

    def mock_get_service(hass, config, discovery_info=None):
        if config["name"] == "demo1":
            return service1
        return service2

    assert await async_setup_component(
        hass,
        "group",
        {},
    )
    await hass.async_block_till_done()

    with patch.object(demo, "get_service", mock_get_service):
        await async_setup_component(
            hass,
            notify.DOMAIN,
            {
                "notify": [
                    {
                        "name": "demo1",
                        "platform": "demo"
                    },
                    {
                        "name": "demo2",
                        "platform": "demo"
                    },
                ]
            },
        )
        await hass.async_block_till_done()

    service = await group.async_get_service(
        hass,
        {
            "services": [
                {
                    "service": "demo1"
                },
                {
                    "service": "demo2",
                    "data": {
                        "target": "unnamed device",
                        "data": {
                            "test": "message"
                        },
                    },
                },
            ]
        },
    )
    """Test sending a message with to a notify group."""
    await service.async_send_message("Hello",
                                     title="Test notification",
                                     data={"hello": "world"})

    await hass.async_block_till_done()

    assert service1.send_message.mock_calls[0][1][0] == "Hello"
    assert service1.send_message.mock_calls[0][2] == {
        "title": "Test notification",
        "data": {
            "hello": "world"
        },
    }
    assert service2.send_message.mock_calls[0][1][0] == "Hello"
    assert service2.send_message.mock_calls[0][2] == {
        "target": ["unnamed device"],
        "title": "Test notification",
        "data": {
            "hello": "world",
            "test": "message"
        },
    }