Add missing hass type hint in component tests (l) (#124220)

This commit is contained in:
epenet 2024-08-19 15:36:23 +02:00 committed by GitHub
parent 16e52f0427
commit 02139fcca6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 119 additions and 91 deletions

View file

@ -5,7 +5,7 @@ from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
import socket import socket
from typing import Any from typing import Any
from unittest.mock import DEFAULT, patch from unittest.mock import DEFAULT, MagicMock, patch
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.components.lg_soundbar.const import DEFAULT_PORT, DOMAIN from homeassistant.components.lg_soundbar.const import DEFAULT_PORT, DOMAIN
@ -17,8 +17,12 @@ from tests.common import MockConfigEntry
def setup_mock_temescal( def setup_mock_temescal(
hass, mock_temescal, mac_info_dev=None, product_info=None, info=None hass: HomeAssistant,
): mock_temescal: MagicMock,
mac_info_dev: dict[str, Any] | None = None,
product_info: dict[str, Any] | None = None,
info: dict[str, Any] | None = None,
) -> None:
"""Set up a mock of the temescal object to craft our expected responses.""" """Set up a mock of the temescal object to craft our expected responses."""
tmock = mock_temescal.temescal tmock = mock_temescal.temescal
instance = tmock.return_value instance = tmock.return_value

View file

@ -33,6 +33,7 @@ from homeassistant.const import (
SERVICE_TURN_OFF, SERVICE_TURN_OFF,
SERVICE_TURN_ON, SERVICE_TURN_ON,
) )
from homeassistant.core import HomeAssistant
from homeassistant.loader import bind_hass from homeassistant.loader import bind_hass
from tests.common import MockToggleEntity from tests.common import MockToggleEntity
@ -40,24 +41,24 @@ from tests.common import MockToggleEntity
@bind_hass @bind_hass
def turn_on( def turn_on(
hass, hass: HomeAssistant,
entity_id=ENTITY_MATCH_ALL, entity_id: str = ENTITY_MATCH_ALL,
transition=None, transition: float | None = None,
brightness=None, brightness: int | None = None,
brightness_pct=None, brightness_pct: float | None = None,
rgb_color=None, rgb_color: tuple[int, int, int] | None = None,
rgbw_color=None, rgbw_color: tuple[int, int, int, int] | None = None,
rgbww_color=None, rgbww_color: tuple[int, int, int, int, int] | None = None,
xy_color=None, xy_color: tuple[float, float] | None = None,
hs_color=None, hs_color: tuple[float, float] | None = None,
color_temp=None, color_temp: int | None = None,
kelvin=None, kelvin: int | None = None,
profile=None, profile: str | None = None,
flash=None, flash: str | None = None,
effect=None, effect: str | None = None,
color_name=None, color_name: str | None = None,
white=None, white: bool | None = None,
): ) -> None:
"""Turn all or specified light on.""" """Turn all or specified light on."""
hass.add_job( hass.add_job(
async_turn_on, async_turn_on,
@ -82,24 +83,24 @@ def turn_on(
async def async_turn_on( async def async_turn_on(
hass, hass: HomeAssistant,
entity_id=ENTITY_MATCH_ALL, entity_id: str = ENTITY_MATCH_ALL,
transition=None, transition: float | None = None,
brightness=None, brightness: int | None = None,
brightness_pct=None, brightness_pct: float | None = None,
rgb_color=None, rgb_color: tuple[int, int, int] | None = None,
rgbw_color=None, rgbw_color: tuple[int, int, int, int] | None = None,
rgbww_color=None, rgbww_color: tuple[int, int, int, int, int] | None = None,
xy_color=None, xy_color: tuple[float, float] | None = None,
hs_color=None, hs_color: tuple[float, float] | None = None,
color_temp=None, color_temp: int | None = None,
kelvin=None, kelvin: int | None = None,
profile=None, profile: str | None = None,
flash=None, flash: str | None = None,
effect=None, effect: str | None = None,
color_name=None, color_name: str | None = None,
white=None, white: bool | None = None,
): ) -> None:
"""Turn all or specified light on.""" """Turn all or specified light on."""
data = { data = {
key: value key: value
@ -128,12 +129,22 @@ async def async_turn_on(
@bind_hass @bind_hass
def turn_off(hass, entity_id=ENTITY_MATCH_ALL, transition=None, flash=None): def turn_off(
hass: HomeAssistant,
entity_id: str = ENTITY_MATCH_ALL,
transition: float | None = None,
flash: str | None = None,
) -> None:
"""Turn all or specified light off.""" """Turn all or specified light off."""
hass.add_job(async_turn_off, hass, entity_id, transition, flash) hass.add_job(async_turn_off, hass, entity_id, transition, flash)
async def async_turn_off(hass, entity_id=ENTITY_MATCH_ALL, transition=None, flash=None): async def async_turn_off(
hass: HomeAssistant,
entity_id: str = ENTITY_MATCH_ALL,
transition: float | None = None,
flash: str | None = None,
) -> None:
"""Turn all or specified light off.""" """Turn all or specified light off."""
data = { data = {
key: value key: value
@ -150,21 +161,21 @@ async def async_turn_off(hass, entity_id=ENTITY_MATCH_ALL, transition=None, flas
@bind_hass @bind_hass
def toggle( def toggle(
hass, hass: HomeAssistant,
entity_id=ENTITY_MATCH_ALL, entity_id: str = ENTITY_MATCH_ALL,
transition=None, transition: float | None = None,
brightness=None, brightness: int | None = None,
brightness_pct=None, brightness_pct: float | None = None,
rgb_color=None, rgb_color: tuple[int, int, int] | None = None,
xy_color=None, xy_color: tuple[float, float] | None = None,
hs_color=None, hs_color: tuple[float, float] | None = None,
color_temp=None, color_temp: int | None = None,
kelvin=None, kelvin: int | None = None,
profile=None, profile: str | None = None,
flash=None, flash: str | None = None,
effect=None, effect: str | None = None,
color_name=None, color_name: str | None = None,
): ) -> None:
"""Toggle all or specified light.""" """Toggle all or specified light."""
hass.add_job( hass.add_job(
async_toggle, async_toggle,
@ -186,21 +197,21 @@ def toggle(
async def async_toggle( async def async_toggle(
hass, hass: HomeAssistant,
entity_id=ENTITY_MATCH_ALL, entity_id: str = ENTITY_MATCH_ALL,
transition=None, transition: float | None = None,
brightness=None, brightness: int | None = None,
brightness_pct=None, brightness_pct: float | None = None,
rgb_color=None, rgb_color: tuple[int, int, int] | None = None,
xy_color=None, xy_color: tuple[float, float] | None = None,
hs_color=None, hs_color: tuple[float, float] | None = None,
color_temp=None, color_temp: int | None = None,
kelvin=None, kelvin: int | None = None,
profile=None, profile: str | None = None,
flash=None, flash: str | None = None,
effect=None, effect: str | None = None,
color_name=None, color_name: str | None = None,
): ) -> None:
"""Turn all or specified light on.""" """Turn all or specified light on."""
data = { data = {
key: value key: value

View file

@ -5,6 +5,7 @@ from unittest.mock import AsyncMock, patch
import pytest import pytest
from homeassistant.components.light import Profiles from homeassistant.components.light import Profiles
from homeassistant.core import HomeAssistant
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -12,7 +13,7 @@ def mock_light_profiles():
"""Mock loading of profiles.""" """Mock loading of profiles."""
data = {} data = {}
def mock_profiles_class(hass): def mock_profiles_class(hass: HomeAssistant) -> Profiles:
profiles = Profiles(hass) profiles = Profiles(hass)
profiles.data = data profiles.data = data
profiles.async_initialize = AsyncMock() profiles.async_initialize = AsyncMock()

View file

@ -2,8 +2,9 @@
from datetime import timedelta from datetime import timedelta
import logging import logging
from typing import Any
from unittest import mock from unittest import mock
from unittest.mock import patch from unittest.mock import MagicMock, patch
import pytest import pytest
@ -30,7 +31,9 @@ ENTITY_OTHER_SWITCH = "switch.mock_switch_2"
ENTITY_OTHER_SWITCH_NUMBER = 2 ENTITY_OTHER_SWITCH_NUMBER = 2
async def simulate_press(hass, mock_litejet, number): async def simulate_press(
hass: HomeAssistant, mock_litejet: MagicMock, number: int
) -> None:
"""Test to simulate a press.""" """Test to simulate a press."""
_LOGGER.info("*** simulate press of %d", number) _LOGGER.info("*** simulate press of %d", number)
callback = mock_litejet.switch_pressed_callbacks.get(number) callback = mock_litejet.switch_pressed_callbacks.get(number)
@ -43,7 +46,9 @@ async def simulate_press(hass, mock_litejet, number):
await hass.async_block_till_done() await hass.async_block_till_done()
async def simulate_release(hass, mock_litejet, number): async def simulate_release(
hass: HomeAssistant, mock_litejet: MagicMock, number: int
) -> None:
"""Test to simulate releasing.""" """Test to simulate releasing."""
_LOGGER.info("*** simulate release of %d", number) _LOGGER.info("*** simulate release of %d", number)
callback = mock_litejet.switch_released_callbacks.get(number) callback = mock_litejet.switch_released_callbacks.get(number)
@ -56,7 +61,9 @@ async def simulate_release(hass, mock_litejet, number):
await hass.async_block_till_done() await hass.async_block_till_done()
async def simulate_time(hass, mock_litejet, delta): async def simulate_time(
hass: HomeAssistant, mock_litejet: MagicMock, delta: timedelta
) -> None:
"""Test to simulate time.""" """Test to simulate time."""
_LOGGER.info( _LOGGER.info(
"*** simulate time change by %s: %s", delta, mock_litejet.start_time + delta "*** simulate time change by %s: %s", delta, mock_litejet.start_time + delta
@ -72,7 +79,7 @@ async def simulate_time(hass, mock_litejet, delta):
_LOGGER.info("*** done with now=%s", dt_util.utcnow()) _LOGGER.info("*** done with now=%s", dt_util.utcnow())
async def setup_automation(hass, trigger): async def setup_automation(hass: HomeAssistant, trigger: dict[str, Any]) -> None:
"""Test setting up the automation.""" """Test setting up the automation."""
await async_init_integration(hass, use_switch=True) await async_init_integration(hass, use_switch=True)
assert await setup.async_setup_component( assert await setup.async_setup_component(
@ -95,7 +102,7 @@ async def setup_automation(hass, trigger):
async def test_simple( async def test_simple(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test the simplest form of a LiteJet trigger.""" """Test the simplest form of a LiteJet trigger."""
await setup_automation( await setup_automation(
@ -110,7 +117,7 @@ async def test_simple(
async def test_only_release( async def test_only_release(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test the simplest form of a LiteJet trigger.""" """Test the simplest form of a LiteJet trigger."""
await setup_automation( await setup_automation(
@ -123,7 +130,7 @@ async def test_only_release(
async def test_held_more_than_short( async def test_held_more_than_short(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test a too short hold.""" """Test a too short hold."""
await setup_automation( await setup_automation(
@ -142,7 +149,7 @@ async def test_held_more_than_short(
async def test_held_more_than_long( async def test_held_more_than_long(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test a hold that is long enough.""" """Test a hold that is long enough."""
await setup_automation( await setup_automation(
@ -164,7 +171,7 @@ async def test_held_more_than_long(
async def test_held_less_than_short( async def test_held_less_than_short(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test a hold that is short enough.""" """Test a hold that is short enough."""
await setup_automation( await setup_automation(
@ -185,7 +192,7 @@ async def test_held_less_than_short(
async def test_held_less_than_long( async def test_held_less_than_long(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test a hold that is too long.""" """Test a hold that is too long."""
await setup_automation( await setup_automation(
@ -206,7 +213,7 @@ async def test_held_less_than_long(
async def test_held_in_range_short( async def test_held_in_range_short(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test an in-range trigger with a too short hold.""" """Test an in-range trigger with a too short hold."""
await setup_automation( await setup_automation(
@ -226,7 +233,7 @@ async def test_held_in_range_short(
async def test_held_in_range_just_right( async def test_held_in_range_just_right(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test an in-range trigger with a just right hold.""" """Test an in-range trigger with a just right hold."""
await setup_automation( await setup_automation(
@ -249,7 +256,7 @@ async def test_held_in_range_just_right(
async def test_held_in_range_long( async def test_held_in_range_long(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test an in-range trigger with a too long hold.""" """Test an in-range trigger with a too long hold."""
await setup_automation( await setup_automation(
@ -271,7 +278,7 @@ async def test_held_in_range_long(
async def test_reload( async def test_reload(
hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet hass: HomeAssistant, service_calls: list[ServiceCall], mock_litejet: MagicMock
) -> None: ) -> None:
"""Test reloading automation.""" """Test reloading automation."""
await setup_automation( await setup_automation(

View file

@ -524,7 +524,7 @@ async def test_exclude_described_event(
entity_id2 = "automation.included_rule" entity_id2 = "automation.included_rule"
entity_id3 = "sensor.excluded_domain" entity_id3 = "sensor.excluded_domain"
def _describe(event): def _describe(event: Event) -> dict[str, str]:
"""Describe an event.""" """Describe an event."""
return { return {
"name": "Test Name", "name": "Test Name",
@ -532,7 +532,12 @@ async def test_exclude_described_event(
"entity_id": event.data[ATTR_ENTITY_ID], "entity_id": event.data[ATTR_ENTITY_ID],
} }
def async_describe_events(hass, async_describe_event): def async_describe_events(
hass: HomeAssistant,
async_describe_event: Callable[
[str, str, Callable[[Event], dict[str, str]]], None
],
) -> None:
"""Mock to describe events.""" """Mock to describe events."""
async_describe_event("automation", "some_automation_event", _describe) async_describe_event("automation", "some_automation_event", _describe)
async_describe_event("sensor", "some_event", _describe) async_describe_event("sensor", "some_event", _describe)

View file

@ -226,7 +226,7 @@ async def test_can_set_level_from_store(
_reset_logging() _reset_logging()
async def _assert_log_levels(hass): async def _assert_log_levels(hass: HomeAssistant) -> None:
assert logging.getLogger(UNCONFIG_NS).level == logging.NOTSET assert logging.getLogger(UNCONFIG_NS).level == logging.NOTSET
assert logging.getLogger(UNCONFIG_NS).isEnabledFor(logging.CRITICAL) is True assert logging.getLogger(UNCONFIG_NS).isEnabledFor(logging.CRITICAL) is True
assert ( assert (

View file

@ -98,7 +98,7 @@ MOCK_BUTTON_DEVICES = [
] ]
async def _async_setup_lutron_with_picos(hass): async def _async_setup_lutron_with_picos(hass: HomeAssistant) -> str:
"""Setups a lutron bridge with picos.""" """Setups a lutron bridge with picos."""
config_entry = MockConfigEntry( config_entry = MockConfigEntry(
domain=DOMAIN, domain=DOMAIN,