core/tests/components/cover/common.py

78 lines
2.4 KiB
Python
Raw Normal View History

"""Collection of helper methods and classes for cover tests."""
from typing import Any
from homeassistant.components.cover import CoverEntity, CoverEntityFeature
from homeassistant.const import STATE_CLOSED, STATE_CLOSING, STATE_OPEN, STATE_OPENING
from tests.common import MockEntity
class MockCover(MockEntity, CoverEntity):
"""Mock Cover class."""
def __init__(
self, reports_opening_closing: bool | None = None, **values: Any
) -> None:
"""Initialize a mock cover entity."""
super().__init__(**values)
self._reports_opening_closing = (
reports_opening_closing
if reports_opening_closing is not None
else CoverEntityFeature.STOP in self.supported_features
)
@property
def is_closed(self):
"""Return if the cover is closed or not."""
if "state" in self._values and self._values["state"] == STATE_CLOSED:
return True
return self.current_cover_position == 0
@property
def is_opening(self):
"""Return if the cover is opening or not."""
if "state" in self._values:
return self._values["state"] == STATE_OPENING
return False
@property
def is_closing(self):
"""Return if the cover is closing or not."""
if "state" in self._values:
return self._values["state"] == STATE_CLOSING
return False
def open_cover(self, **kwargs) -> None:
"""Open cover."""
if self._reports_opening_closing:
self._values["state"] = STATE_OPENING
else:
self._values["state"] = STATE_OPEN
def close_cover(self, **kwargs) -> None:
"""Close cover."""
if self._reports_opening_closing:
self._values["state"] = STATE_CLOSING
else:
self._values["state"] = STATE_CLOSED
def stop_cover(self, **kwargs) -> None:
"""Stop cover."""
assert CoverEntityFeature.STOP in self.supported_features
self._values["state"] = STATE_CLOSED if self.is_closed else STATE_OPEN
@property
def current_cover_position(self):
"""Return current position of cover."""
return self._handle("current_cover_position")
@property
def current_cover_tilt_position(self):
"""Return current position of cover tilt."""
return self._handle("current_cover_tilt_position")