Migrate matrix to use run_immediately for start listener (#115167)

* Migrate matrix to use run_immediately for start listener

* Migrate matrix to use run_immediately for start listener
This commit is contained in:
J. Nick Koston 2024-04-07 16:30:54 -10:00 committed by GitHub
parent af1023074e
commit 1fd5f64dcc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 4 deletions

View file

@ -220,7 +220,7 @@ class MatrixBot:
) # milliseconds. ) # milliseconds.
self.hass.bus.async_listen_once( self.hass.bus.async_listen_once(
EVENT_HOMEASSISTANT_START, handle_startup, run_immediately=False EVENT_HOMEASSISTANT_START, handle_startup, run_immediately=True
) )
def _load_commands(self, commands: list[ConfigCommand]) -> None: def _load_commands(self, commands: list[ConfigCommand]) -> None:

View file

@ -281,6 +281,9 @@ async def matrix_bot(
assert await async_setup_component(hass, MATRIX_DOMAIN, MOCK_CONFIG_DATA) assert await async_setup_component(hass, MATRIX_DOMAIN, MOCK_CONFIG_DATA)
assert await async_setup_component(hass, NOTIFY_DOMAIN, MOCK_CONFIG_DATA) assert await async_setup_component(hass, NOTIFY_DOMAIN, MOCK_CONFIG_DATA)
await hass.async_block_till_done() await hass.async_block_till_done()
# Accessing hass.data in tests is not desirable, but all the tests here
# currently do this.
assert isinstance(matrix_bot := hass.data[MATRIX_DOMAIN], MatrixBot) assert isinstance(matrix_bot := hass.data[MATRIX_DOMAIN], MatrixBot)
await hass.async_start() await hass.async_start()

View file

@ -1,14 +1,36 @@
"""Test MatrixBot._join.""" """Test MatrixBot._join."""
import pytest
from homeassistant.components.matrix import MatrixBot from homeassistant.components.matrix import MatrixBot
from homeassistant.components.matrix.const import DOMAIN as MATRIX_DOMAIN
from homeassistant.components.notify import DOMAIN as NOTIFY_DOMAIN
from homeassistant.const import EVENT_HOMEASSISTANT_START
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from .conftest import MOCK_CONFIG_DATA
from tests.components.matrix.conftest import TEST_BAD_ROOM, TEST_JOINABLE_ROOMS from tests.components.matrix.conftest import TEST_BAD_ROOM, TEST_JOINABLE_ROOMS
async def test_join(hass, matrix_bot: MatrixBot, caplog): async def test_join(
hass: HomeAssistant,
caplog: pytest.LogCaptureFixture,
mock_client,
mock_save_json,
mock_allowed_path,
) -> None:
"""Test joining configured rooms.""" """Test joining configured rooms."""
assert await async_setup_component(hass, MATRIX_DOMAIN, MOCK_CONFIG_DATA)
assert await async_setup_component(hass, NOTIFY_DOMAIN, MOCK_CONFIG_DATA)
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
await hass.async_block_till_done(wait_background_tasks=True)
# Accessing hass.data in tests is not desirable, but all the tests here
# currently do this.
matrix_bot = hass.data[MATRIX_DOMAIN]
await hass.async_start()
for room_id in TEST_JOINABLE_ROOMS: for room_id in TEST_JOINABLE_ROOMS:
assert f"Joined or already in room '{room_id}'" in caplog.messages assert f"Joined or already in room '{room_id}'" in caplog.messages
@ -21,7 +43,7 @@ async def test_join(hass, matrix_bot: MatrixBot, caplog):
) )
async def test_resolve_aliases(hass, matrix_bot: MatrixBot): async def test_resolve_aliases(hass: HomeAssistant, matrix_bot: MatrixBot) -> None:
"""Test resolving configured room aliases into room ids.""" """Test resolving configured room aliases into room ids."""
await hass.async_start() await hass.async_start()