78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
"""Switch tests for the D-Link Smart Plug integration."""
|
|
from collections.abc import Awaitable, Callable
|
|
|
|
from homeassistant.components.dlink import DOMAIN
|
|
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
|
|
from homeassistant.const import (
|
|
ATTR_ENTITY_ID,
|
|
SERVICE_TURN_OFF,
|
|
SERVICE_TURN_ON,
|
|
STATE_OFF,
|
|
STATE_ON,
|
|
)
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from .conftest import ComponentSetup
|
|
|
|
from tests.components.repairs import get_repairs
|
|
|
|
|
|
async def test_switch_state(
|
|
hass: HomeAssistant,
|
|
hass_ws_client: Callable[[HomeAssistant], Awaitable[None]],
|
|
setup_integration: ComponentSetup,
|
|
) -> None:
|
|
"""Test we get the switch status."""
|
|
assert await async_setup_component(
|
|
hass,
|
|
SWITCH_DOMAIN,
|
|
{
|
|
SWITCH_DOMAIN: {
|
|
"platform": DOMAIN,
|
|
"host": "1.2.3.4",
|
|
"username": "admin",
|
|
"password": "123456",
|
|
"use_legacy_protocol": True,
|
|
}
|
|
},
|
|
)
|
|
await hass.async_block_till_done()
|
|
issues = await get_repairs(hass, hass_ws_client)
|
|
assert len(issues) == 1
|
|
assert issues[0]["issue_id"] == "deprecated_yaml"
|
|
|
|
await setup_integration()
|
|
|
|
entity_id = "switch.mock_title_switch"
|
|
state = hass.states.get(entity_id)
|
|
assert state.state == STATE_OFF
|
|
assert state.attributes["total_consumption"] == 1040.0
|
|
assert state.attributes["temperature"] == 33
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_ON,
|
|
{ATTR_ENTITY_ID: [entity_id]},
|
|
blocking=True,
|
|
)
|
|
assert hass.states.get(entity_id).state == STATE_ON
|
|
await hass.services.async_call(
|
|
SWITCH_DOMAIN,
|
|
SERVICE_TURN_OFF,
|
|
{ATTR_ENTITY_ID: [entity_id]},
|
|
blocking=True,
|
|
)
|
|
assert hass.states.get(entity_id).state == STATE_OFF
|
|
|
|
|
|
async def test_switch_no_value(
|
|
hass: HomeAssistant, setup_integration_legacy: ComponentSetup
|
|
) -> None:
|
|
"""Test we handle 'N/A' being passed by the pypi package."""
|
|
await setup_integration_legacy()
|
|
|
|
state = hass.states.get("switch.mock_title_switch")
|
|
assert state.state == STATE_OFF
|
|
assert state.attributes["total_consumption"] is None
|
|
assert state.attributes["temperature"] is None
|