mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 18:27:09 +00:00
Fix lingering tasks in snooz tests (#127523)
This commit is contained in:
parent
6eb49991a4
commit
c191a7cfdb
@ -6,7 +6,8 @@ from dataclasses import dataclass
|
|||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
from pysnooz.commands import SnoozCommandData
|
from pysnooz.commands import SnoozCommandData
|
||||||
from pysnooz.testing import MockSnoozDevice
|
from pysnooz.device import DisconnectionReason, SnoozConnectionStatus
|
||||||
|
from pysnooz.testing import MockSnoozDevice as ParentMockSnoozDevice
|
||||||
|
|
||||||
from homeassistant.components.snooz.const import DOMAIN
|
from homeassistant.components.snooz.const import DOMAIN
|
||||||
from homeassistant.const import CONF_ADDRESS, CONF_TOKEN
|
from homeassistant.const import CONF_ADDRESS, CONF_TOKEN
|
||||||
@ -66,6 +67,36 @@ class SnoozFixture:
|
|||||||
device: MockSnoozDevice
|
device: MockSnoozDevice
|
||||||
|
|
||||||
|
|
||||||
|
class MockSnoozDevice(ParentMockSnoozDevice):
|
||||||
|
"""Used for testing integration with Bleak.
|
||||||
|
|
||||||
|
Adjusted for https://github.com/AustinBrunkhorst/pysnooz/pull/19
|
||||||
|
"""
|
||||||
|
|
||||||
|
async def async_disconnect(self) -> None:
|
||||||
|
"""Disconnect from the device."""
|
||||||
|
self._is_manually_disconnecting = True
|
||||||
|
try:
|
||||||
|
self._cancel_current_command()
|
||||||
|
if (
|
||||||
|
self._reconnection_task is not None
|
||||||
|
and not self._reconnection_task.done()
|
||||||
|
):
|
||||||
|
self._reconnection_task.cancel()
|
||||||
|
|
||||||
|
if self._connection_task is not None and not self._connection_task.done():
|
||||||
|
self._connection_task.cancel()
|
||||||
|
|
||||||
|
if self._api is not None:
|
||||||
|
await self._api.async_disconnect()
|
||||||
|
|
||||||
|
if self.connection_status != SnoozConnectionStatus.DISCONNECTED:
|
||||||
|
self._machine.device_disconnected(reason=DisconnectionReason.USER)
|
||||||
|
|
||||||
|
finally:
|
||||||
|
self._is_manually_disconnecting = False
|
||||||
|
|
||||||
|
|
||||||
async def create_mock_snooz(
|
async def create_mock_snooz(
|
||||||
connected: bool = True,
|
connected: bool = True,
|
||||||
initial_state: SnoozCommandData = SnoozCommandData(on=False, volume=0),
|
initial_state: SnoozCommandData = SnoozCommandData(on=False, volume=0),
|
||||||
|
@ -149,8 +149,6 @@ async def test_transition_off(hass: HomeAssistant, snooz_fan_entity_id: str) ->
|
|||||||
assert ATTR_ASSUMED_STATE not in state.attributes
|
assert ATTR_ASSUMED_STATE not in state.attributes
|
||||||
|
|
||||||
|
|
||||||
# This tests needs to be adjusted to remove lingering tasks
|
|
||||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
|
||||||
async def test_push_events(
|
async def test_push_events(
|
||||||
hass: HomeAssistant, mock_connected_snooz: SnoozFixture, snooz_fan_entity_id: str
|
hass: HomeAssistant, mock_connected_snooz: SnoozFixture, snooz_fan_entity_id: str
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -174,9 +172,10 @@ async def test_push_events(
|
|||||||
state = hass.states.get(snooz_fan_entity_id)
|
state = hass.states.get(snooz_fan_entity_id)
|
||||||
assert state.attributes[ATTR_ASSUMED_STATE] is True
|
assert state.attributes[ATTR_ASSUMED_STATE] is True
|
||||||
|
|
||||||
|
# Don't attempt to reconnect
|
||||||
|
await mock_connected_snooz.device.async_disconnect()
|
||||||
|
|
||||||
|
|
||||||
# This tests needs to be adjusted to remove lingering tasks
|
|
||||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
|
||||||
async def test_restore_state(
|
async def test_restore_state(
|
||||||
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
hass: HomeAssistant, entity_registry: er.EntityRegistry
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -2,15 +2,11 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
from . import SnoozFixture
|
from . import SnoozFixture
|
||||||
|
|
||||||
|
|
||||||
# This tests needs to be adjusted to remove lingering tasks
|
|
||||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
|
||||||
async def test_removing_entry_cleans_up_connections(
|
async def test_removing_entry_cleans_up_connections(
|
||||||
hass: HomeAssistant, mock_connected_snooz: SnoozFixture
|
hass: HomeAssistant, mock_connected_snooz: SnoozFixture
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -21,8 +17,6 @@ async def test_removing_entry_cleans_up_connections(
|
|||||||
assert not mock_connected_snooz.device.is_connected
|
assert not mock_connected_snooz.device.is_connected
|
||||||
|
|
||||||
|
|
||||||
# This tests needs to be adjusted to remove lingering tasks
|
|
||||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
|
||||||
async def test_reloading_entry_cleans_up_connections(
|
async def test_reloading_entry_cleans_up_connections(
|
||||||
hass: HomeAssistant, mock_connected_snooz: SnoozFixture
|
hass: HomeAssistant, mock_connected_snooz: SnoozFixture
|
||||||
) -> None:
|
) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user