Add missing hass type hint in component tests (i) (#124216)

pull/124220/head
epenet 2024-08-19 12:40:17 +02:00 committed by GitHub
parent 057f31132b
commit f0af33bd2b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 63 additions and 33 deletions

View File

@ -30,7 +30,7 @@ from .conftest import get_aqualink_device, get_aqualink_system
from tests.common import async_fire_time_changed
async def _ffwd_next_update_interval(hass):
async def _ffwd_next_update_interval(hass: HomeAssistant) -> None:
now = dt_util.utcnow()
async_fire_time_changed(hass, now + UPDATE_INTERVAL)
await hass.async_block_till_done()

View File

@ -6,19 +6,19 @@ components. Instead call the service directly.
from homeassistant.components.image_processing import DOMAIN, SERVICE_SCAN
from homeassistant.const import ATTR_ENTITY_ID, ENTITY_MATCH_ALL
from homeassistant.core import callback
from homeassistant.core import HomeAssistant, callback
from homeassistant.loader import bind_hass
@bind_hass
def scan(hass, entity_id=ENTITY_MATCH_ALL):
def scan(hass: HomeAssistant, entity_id: str = ENTITY_MATCH_ALL) -> None:
"""Force process of all cameras or given entity."""
hass.add_job(async_scan, hass, entity_id)
@callback
@bind_hass
def async_scan(hass, entity_id=ENTITY_MATCH_ALL):
def async_scan(hass: HomeAssistant, entity_id: str = ENTITY_MATCH_ALL) -> None:
"""Force process of all cameras or given entity."""
data = {ATTR_ENTITY_ID: entity_id} if entity_id else None
hass.async_create_task(hass.services.async_call(DOMAIN, SERVICE_SCAN, data))

View File

@ -35,13 +35,15 @@ def aiohttp_unused_port_factory(
return unused_tcp_port_factory
def get_url(hass):
def get_url(hass: HomeAssistant) -> str:
"""Return camera url."""
state = hass.states.get("camera.demo_camera")
return f"{hass.config.internal_url}{state.attributes.get(ATTR_ENTITY_PICTURE)}"
async def setup_image_processing(hass, aiohttp_unused_port_factory):
async def setup_image_processing(
hass: HomeAssistant, aiohttp_unused_port_factory: Callable[[], int]
) -> None:
"""Set up things to be run when tests are started."""
await async_setup_component(
hass,
@ -55,7 +57,7 @@ async def setup_image_processing(hass, aiohttp_unused_port_factory):
await hass.async_block_till_done()
async def setup_image_processing_face(hass):
async def setup_image_processing_face(hass: HomeAssistant) -> None:
"""Set up things to be run when tests are started."""
config = {ip.DOMAIN: {"platform": "demo"}, "camera": {"platform": "demo"}}
@ -93,7 +95,7 @@ async def test_setup_component_with_service(hass: HomeAssistant) -> None:
async def test_get_image_from_camera(
mock_camera_read,
hass: HomeAssistant,
aiohttp_unused_port_factory,
aiohttp_unused_port_factory: Callable[[], int],
) -> None:
"""Grab an image from camera entity."""
await setup_image_processing(hass, aiohttp_unused_port_factory)
@ -116,7 +118,7 @@ async def test_get_image_from_camera(
async def test_get_image_without_exists_camera(
mock_image,
hass: HomeAssistant,
aiohttp_unused_port_factory,
aiohttp_unused_port_factory: Callable[[], int],
) -> None:
"""Try to get image without exists camera."""
await setup_image_processing(hass, aiohttp_unused_port_factory)
@ -191,7 +193,7 @@ async def test_face_event_call_no_confidence(
@pytest.mark.usefixtures("enable_custom_integrations")
async def test_update_missing_camera(
hass: HomeAssistant,
aiohttp_unused_port_factory,
aiohttp_unused_port_factory: Callable[[], int],
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test when entity does not set camera."""

View File

@ -334,7 +334,9 @@ async def test_invalid_config(
assert not await async_setup_component(hass, influxdb.DOMAIN, config)
async def _setup(hass, mock_influx_client, config_ext, get_write_api):
async def _setup(
hass: HomeAssistant, mock_influx_client, config_ext, get_write_api
) -> None:
"""Prepare client for next test and return event handler method."""
config = {
"influxdb": {

View File

@ -25,7 +25,7 @@ from homeassistant.components.influxdb.const import (
)
from homeassistant.components.influxdb.sensor import PLATFORM_SCHEMA
from homeassistant.const import STATE_UNKNOWN
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, State
from homeassistant.helpers.entity_platform import PLATFORM_NOT_READY_BASE_WAIT_TIME
from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util
@ -190,7 +190,9 @@ def _set_query_mock_v2(
return query_api
async def _setup(hass, config_ext, queries, expected_sensors):
async def _setup(
hass: HomeAssistant, config_ext, queries, expected_sensors
) -> list[State]:
"""Create client and test expected sensors."""
config = {
DOMAIN: config_ext,

View File

@ -79,7 +79,9 @@ def storage_setup(hass: HomeAssistant, hass_storage: dict[str, Any]):
return _storage
async def async_set_date_and_time(hass, entity_id, dt_value):
async def async_set_date_and_time(
hass: HomeAssistant, entity_id: str, dt_value: datetime.datetime
) -> None:
"""Set date and / or time of input_datetime."""
await hass.services.async_call(
DOMAIN,
@ -93,7 +95,9 @@ async def async_set_date_and_time(hass, entity_id, dt_value):
)
async def async_set_datetime(hass, entity_id, dt_value):
async def async_set_datetime(
hass: HomeAssistant, entity_id: str, dt_value: datetime.datetime
) -> None:
"""Set date and / or time of input_datetime."""
await hass.services.async_call(
DOMAIN,
@ -103,7 +107,9 @@ async def async_set_datetime(hass, entity_id, dt_value):
)
async def async_set_timestamp(hass, entity_id, timestamp):
async def async_set_timestamp(
hass: HomeAssistant, entity_id: str, timestamp: float
) -> None:
"""Set date and / or time of input_datetime."""
await hass.services.async_call(
DOMAIN,

View File

@ -65,7 +65,7 @@ def storage_setup(hass: HomeAssistant, hass_storage: dict[str, Any]):
return _storage
async def set_value(hass, entity_id, value):
async def set_value(hass: HomeAssistant, entity_id: str, value: str) -> None:
"""Set input_number to value.
This is a legacy helper method. Do not use it for new tests.
@ -78,7 +78,7 @@ async def set_value(hass, entity_id, value):
)
async def increment(hass, entity_id):
async def increment(hass: HomeAssistant, entity_id: str) -> None:
"""Increment value of entity.
This is a legacy helper method. Do not use it for new tests.
@ -88,7 +88,7 @@ async def increment(hass, entity_id):
)
async def decrement(hass, entity_id):
async def decrement(hass: HomeAssistant, entity_id: str) -> None:
"""Decrement value of entity.
This is a legacy helper method. Do not use it for new tests.

View File

@ -71,7 +71,7 @@ def storage_setup(hass: HomeAssistant, hass_storage: dict[str, Any]):
return _storage
async def async_set_value(hass, entity_id, value):
async def async_set_value(hass: HomeAssistant, entity_id: str, value: str) -> None:
"""Set input_text to value."""
await hass.services.async_call(
DOMAIN,

View File

@ -1,6 +1,7 @@
"""Test the Insteon All-Link Database APIs."""
import json
from typing import Any
from unittest.mock import patch
from pyinsteon import pub
@ -23,7 +24,7 @@ from homeassistant.core import HomeAssistant
from .mock_devices import MockDevices
from tests.common import load_fixture
from tests.typing import WebSocketGenerator
from tests.typing import MockHAClientWebSocket, WebSocketGenerator
@pytest.fixture(name="aldb_data", scope="module")
@ -32,7 +33,9 @@ def aldb_data_fixture():
return json.loads(load_fixture("insteon/aldb_data.json"))
async def _setup(hass, hass_ws_client, aldb_data):
async def _setup(
hass: HomeAssistant, hass_ws_client: WebSocketGenerator, aldb_data: dict[str, Any]
) -> tuple[MockHAClientWebSocket, MockDevices]:
"""Set up tests."""
ws_client = await hass_ws_client(hass)
devices = MockDevices()

View File

@ -1,6 +1,7 @@
"""Test the Insteon properties APIs."""
import json
from typing import Any
from unittest.mock import AsyncMock, patch
from pyinsteon.config import MOMENTARY_DELAY, RELAY_MODE, TOGGLE_BUTTON
@ -26,7 +27,7 @@ from homeassistant.core import HomeAssistant
from .mock_devices import MockDevices
from tests.common import load_fixture
from tests.typing import WebSocketGenerator
from tests.typing import MockHAClientWebSocket, WebSocketGenerator
@pytest.fixture(name="kpl_properties_data", scope="module")
@ -41,7 +42,12 @@ def iolinc_properties_data_fixture():
return json.loads(load_fixture("insteon/iolinc_properties.json"))
async def _setup(hass, hass_ws_client, address, properties_data):
async def _setup(
hass: HomeAssistant,
hass_ws_client: WebSocketGenerator,
address: str,
properties_data: dict[str, Any],
) -> tuple[MockHAClientWebSocket, MockDevices]:
"""Set up tests."""
ws_client = await hass_ws_client(hass)
devices = MockDevices()

View File

@ -1,6 +1,8 @@
"""Test the config flow for the Insteon integration."""
from unittest.mock import patch
from collections.abc import Callable
from typing import Any
from unittest.mock import AsyncMock, patch
import pytest
from voluptuous_serialize import convert
@ -14,7 +16,7 @@ from homeassistant.components.insteon.config_flow import (
STEP_PLM_MANUALLY,
)
from homeassistant.components.insteon.const import CONF_HUB_VERSION, DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.config_entries import ConfigEntryState, ConfigFlowResult
from homeassistant.const import CONF_DEVICE, CONF_HOST
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResultType
@ -60,7 +62,7 @@ async def mock_failed_connection(*args, **kwargs):
raise ConnectionError("Connection failed")
async def _init_form(hass, modem_type):
async def _init_form(hass: HomeAssistant, modem_type: str) -> ConfigFlowResult:
"""Run the user form."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER}
@ -73,7 +75,12 @@ async def _init_form(hass, modem_type):
)
async def _device_form(hass, flow_id, connection, user_input):
async def _device_form(
hass: HomeAssistant,
flow_id: str,
connection: Callable[..., Any],
user_input: dict[str, Any] | None,
) -> tuple[ConfigFlowResult, AsyncMock]:
"""Test the PLM, Hub v1 or Hub v2 form."""
with (
patch(

View File

@ -1,5 +1,7 @@
"""Tests for iZone."""
from collections.abc import Callable
from typing import Any
from unittest.mock import Mock, patch
import pytest
@ -12,7 +14,7 @@ from homeassistant.helpers.dispatcher import async_dispatcher_send
@pytest.fixture
def mock_disco():
def mock_disco() -> Mock:
"""Mock discovery service."""
disco = Mock()
disco.pi_disco = Mock()
@ -20,15 +22,15 @@ def mock_disco():
return disco
def _mock_start_discovery(hass, mock_disco):
def do_disovered(*args):
def _mock_start_discovery(hass: HomeAssistant, mock_disco: Mock) -> Callable[..., Mock]:
def do_disovered(*args: Any) -> Mock:
async_dispatcher_send(hass, DISPATCH_CONTROLLER_DISCOVERED, True)
return mock_disco
return do_disovered
async def test_not_found(hass: HomeAssistant, mock_disco) -> None:
async def test_not_found(hass: HomeAssistant, mock_disco: Mock) -> None:
"""Test not finding iZone controller."""
with (
@ -56,7 +58,7 @@ async def test_not_found(hass: HomeAssistant, mock_disco) -> None:
stop_disco.assert_called_once()
async def test_found(hass: HomeAssistant, mock_disco) -> None:
async def test_found(hass: HomeAssistant, mock_disco: Mock) -> None:
"""Test not finding iZone controller."""
mock_disco.pi_disco.controllers["blah"] = object()