core/tests/components/dlink/test_switch.py

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