mirror of
https://github.com/home-assistant/core.git
synced 2026-08-06 13:26:29 +01:00
160 lines
4.5 KiB
Python
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,
|
|
),
|
|
]
|