mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 12:59:34 +00:00
Add 100% tests coverage for Shelly cover and switch platforms (#45001)
This commit is contained in:
93
tests/components/shelly/test_cover.py
Normal file
93
tests/components/shelly/test_cover.py
Normal file
@@ -0,0 +1,93 @@
|
||||
"""The scene tests for the myq platform."""
|
||||
from homeassistant.components.cover import (
|
||||
ATTR_CURRENT_POSITION,
|
||||
ATTR_POSITION,
|
||||
DOMAIN as COVER_DOMAIN,
|
||||
SERVICE_CLOSE_COVER,
|
||||
SERVICE_OPEN_COVER,
|
||||
SERVICE_SET_COVER_POSITION,
|
||||
SERVICE_STOP_COVER,
|
||||
STATE_CLOSED,
|
||||
STATE_CLOSING,
|
||||
STATE_OPEN,
|
||||
STATE_OPENING,
|
||||
)
|
||||
from homeassistant.const import ATTR_ENTITY_ID
|
||||
|
||||
ROLLER_BLOCK_ID = 1
|
||||
|
||||
|
||||
async def test_services(hass, coap_wrapper, monkeypatch):
|
||||
"""Test device turn on/off services."""
|
||||
assert coap_wrapper
|
||||
|
||||
monkeypatch.setitem(coap_wrapper.device.settings, "mode", "roller")
|
||||
hass.async_create_task(
|
||||
hass.config_entries.async_forward_entry_setup(coap_wrapper.entry, COVER_DOMAIN)
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
await hass.services.async_call(
|
||||
COVER_DOMAIN,
|
||||
SERVICE_SET_COVER_POSITION,
|
||||
{ATTR_ENTITY_ID: "cover.test_name", ATTR_POSITION: 50},
|
||||
blocking=True,
|
||||
)
|
||||
state = hass.states.get("cover.test_name")
|
||||
assert state.attributes[ATTR_CURRENT_POSITION] == 50
|
||||
|
||||
await hass.services.async_call(
|
||||
COVER_DOMAIN,
|
||||
SERVICE_OPEN_COVER,
|
||||
{ATTR_ENTITY_ID: "cover.test_name"},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get("cover.test_name").state == STATE_OPENING
|
||||
|
||||
await hass.services.async_call(
|
||||
COVER_DOMAIN,
|
||||
SERVICE_CLOSE_COVER,
|
||||
{ATTR_ENTITY_ID: "cover.test_name"},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get("cover.test_name").state == STATE_CLOSING
|
||||
|
||||
await hass.services.async_call(
|
||||
COVER_DOMAIN,
|
||||
SERVICE_STOP_COVER,
|
||||
{ATTR_ENTITY_ID: "cover.test_name"},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get("cover.test_name").state == STATE_CLOSED
|
||||
|
||||
|
||||
async def test_update(hass, coap_wrapper, monkeypatch):
|
||||
"""Test device update."""
|
||||
assert coap_wrapper
|
||||
|
||||
hass.async_create_task(
|
||||
hass.config_entries.async_forward_entry_setup(coap_wrapper.entry, COVER_DOMAIN)
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
monkeypatch.setattr(coap_wrapper.device.blocks[ROLLER_BLOCK_ID], "rollerPos", 0)
|
||||
await hass.helpers.entity_component.async_update_entity("cover.test_name")
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get("cover.test_name").state == STATE_CLOSED
|
||||
|
||||
monkeypatch.setattr(coap_wrapper.device.blocks[ROLLER_BLOCK_ID], "rollerPos", 100)
|
||||
await hass.helpers.entity_component.async_update_entity("cover.test_name")
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get("cover.test_name").state == STATE_OPEN
|
||||
|
||||
|
||||
async def test_no_roller_blocks(hass, coap_wrapper, monkeypatch):
|
||||
"""Test device without roller blocks."""
|
||||
assert coap_wrapper
|
||||
|
||||
monkeypatch.setattr(coap_wrapper.device.blocks[ROLLER_BLOCK_ID], "type", None)
|
||||
hass.async_create_task(
|
||||
hass.config_entries.async_forward_entry_setup(coap_wrapper.entry, COVER_DOMAIN)
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get("cover.test_name") is None
|
||||
Reference in New Issue
Block a user