1
0
mirror of https://github.com/home-assistant/core.git synced 2026-08-06 13:26:29 +01:00
Files
core/tests/components/imou/const.py
T
2026-07-20 09:53:18 +02:00

160 lines
4.5 KiB
Python

"""Constants for the Imou tests."""
from pyimouapi.const import (
PARAM_BATTERY,
PARAM_STATE,
PARAM_STATE_VARIANT,
PARAM_STATUS,
PARAM_STORAGE_USED,
STATE_VARIANT_ENUM,
STATE_VARIANT_NUMERIC,
)
from pyimouapi.ha_device import DeviceStatus, ImouHaDevice
from homeassistant.components.imou.button import (
PARAM_MUTE,
PARAM_PTZ_UP,
PARAM_RESTART_DEVICE,
)
from homeassistant.components.imou.const import (
CONF_API_URL,
CONF_APP_ID,
CONF_APP_SECRET,
PARAM_HEADER_DETECT,
PARAM_LIGHT,
PARAM_MOTION_DETECT,
PARAM_PLUG_SWITCH,
)
TEST_APP_ID = "test_app_id"
TEST_APP_SECRET = "test_app_secret"
TEST_API_URL = "sg"
USER_INPUT = {
CONF_APP_ID: TEST_APP_ID,
CONF_APP_SECRET: TEST_APP_SECRET,
CONF_API_URL: TEST_API_URL,
}
CONFIG_ENTRY_DATA = {
CONF_APP_ID: TEST_APP_ID,
CONF_APP_SECRET: TEST_APP_SECRET,
CONF_API_URL: TEST_API_URL,
}
UNKNOWN_BUTTON_KEY = "legacy_unknown_button"
UNKNOWN_SWITCH_KEY = "legacy_unknown_switch"
UNKNOWN_SENSOR_KEY = "legacy_unknown_sensor"
DEFAULT_SWITCHES = {
PARAM_MOTION_DETECT: {PARAM_STATE: False},
PARAM_HEADER_DETECT: {PARAM_STATE: True},
PARAM_LIGHT: {PARAM_STATE: False},
PARAM_PLUG_SWITCH: {PARAM_STATE: True},
}
DEFAULT_SENSORS = {
PARAM_STATUS: {PARAM_STATE: "online", PARAM_STATE_VARIANT: STATE_VARIANT_ENUM},
PARAM_BATTERY: {PARAM_STATE: 85, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
PARAM_STORAGE_USED: {PARAM_STATE: 42, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"temperature_current": {
PARAM_STATE: 22.5,
PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC,
},
"humidity_current": {PARAM_STATE: 55.0, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"power": {PARAM_STATE: 12.3, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"voltage": {PARAM_STATE: 220.0, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"current": {PARAM_STATE: 0.5, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"switch_cnt": {PARAM_STATE: 3, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"use_electricity": {PARAM_STATE: 1.5, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
"use_time": {PARAM_STATE: 120, PARAM_STATE_VARIANT: STATE_VARIANT_NUMERIC},
}
def create_online_device(
device_id: str,
name: str,
*,
channel_id: str | None = None,
button_keys: tuple[str, ...] = (),
switches: dict[str, dict] | None = None,
sensors: dict[str, dict] | None = None,
) -> ImouHaDevice:
"""Build an online ImouHaDevice for tests."""
return create_device(
device_id,
name,
channel_id=channel_id,
button_keys=button_keys,
status=DeviceStatus.ONLINE,
switches=switches,
sensors=sensors,
)
def create_offline_device(
device_id: str,
name: str,
*,
channel_id: str | None = None,
button_keys: tuple[str, ...] = (),
) -> ImouHaDevice:
"""Build an offline ImouHaDevice for tests."""
return create_device(
device_id,
name,
channel_id=channel_id,
button_keys=button_keys,
status=DeviceStatus.OFFLINE,
)
def create_device(
device_id: str,
name: str,
*,
channel_id: str | None = None,
button_keys: tuple[str, ...] = (),
status: DeviceStatus = DeviceStatus.ONLINE,
switches: dict[str, dict] | None = None,
sensors: dict[str, dict] | None = None,
) -> ImouHaDevice:
"""Build an ImouHaDevice for tests."""
device = ImouHaDevice(device_id, name, "Imou", "m1", "1.0")
if channel_id is not None:
device.set_channel_id(channel_id)
for key in button_keys:
device._buttons[key] = {}
device._sensors[PARAM_STATUS] = {
PARAM_STATE: status.value,
PARAM_STATE_VARIANT: STATE_VARIANT_ENUM,
}
if switches:
device._switches.update({key: dict(value) for key, value in switches.items()})
if sensors:
device._sensors.update({key: dict(value) for key, value in sensors.items()})
return device
def default_mock_devices() -> list[ImouHaDevice]:
"""Return a fresh default device list for tests."""
return [
create_online_device(
"d1",
"Device 1",
button_keys=(PARAM_MUTE, PARAM_PTZ_UP, PARAM_RESTART_DEVICE),
),
]
def sensor_mock_devices() -> list[ImouHaDevice]:
"""Return a fresh sensor-focused device list for tests."""
return [
create_online_device(
"d1",
"Device 1",
button_keys=(),
sensors=DEFAULT_SENSORS,
),
]