96 lines
3.2 KiB
Python
96 lines
3.2 KiB
Python
|
"""Mocks for the august component."""
|
||
|
import datetime
|
||
|
from unittest.mock import MagicMock, PropertyMock
|
||
|
|
||
|
from august.activity import Activity
|
||
|
|
||
|
from homeassistant.components.august import AugustData
|
||
|
from homeassistant.util import dt
|
||
|
|
||
|
|
||
|
class MockActivity(Activity):
|
||
|
"""A mock for py-august Activity class."""
|
||
|
|
||
|
def __init__(
|
||
|
self, action=None, activity_start_timestamp=None, activity_end_timestamp=None
|
||
|
):
|
||
|
"""Init the py-august Activity class mock."""
|
||
|
self._action = action
|
||
|
self._activity_start_timestamp = activity_start_timestamp
|
||
|
self._activity_end_timestamp = activity_end_timestamp
|
||
|
|
||
|
@property
|
||
|
def activity_start_time(self):
|
||
|
"""Mock the time activity started."""
|
||
|
return datetime.datetime.fromtimestamp(self._activity_start_timestamp)
|
||
|
|
||
|
@property
|
||
|
def activity_end_time(self):
|
||
|
"""Mock the time activity ended."""
|
||
|
return datetime.datetime.fromtimestamp(self._activity_end_timestamp)
|
||
|
|
||
|
@property
|
||
|
def action(self):
|
||
|
"""Mock the action."""
|
||
|
return self._action
|
||
|
|
||
|
|
||
|
class MockAugustData(AugustData):
|
||
|
"""A wrapper to mock AugustData."""
|
||
|
|
||
|
# AugustData support multiple locks, however for the purposes of
|
||
|
# mocking we currently only mock one lockid
|
||
|
|
||
|
def __init__(
|
||
|
self, last_lock_status_update_timestamp=1, last_door_state_update_timestamp=1
|
||
|
):
|
||
|
"""Mock AugustData."""
|
||
|
self._last_lock_status_update_time_utc = dt.as_utc(
|
||
|
datetime.datetime.fromtimestamp(last_lock_status_update_timestamp)
|
||
|
)
|
||
|
self._last_door_state_update_time_utc = dt.as_utc(
|
||
|
datetime.datetime.fromtimestamp(last_lock_status_update_timestamp)
|
||
|
)
|
||
|
|
||
|
def get_last_lock_status_update_time_utc(self, device_id):
|
||
|
"""Mock to get last lock status update time."""
|
||
|
return self._last_lock_status_update_time_utc
|
||
|
|
||
|
def set_last_lock_status_update_time_utc(self, device_id, update_time):
|
||
|
"""Mock to set last lock status update time."""
|
||
|
self._last_lock_status_update_time_utc = update_time
|
||
|
|
||
|
def get_last_door_state_update_time_utc(self, device_id):
|
||
|
"""Mock to get last door state update time."""
|
||
|
return self._last_door_state_update_time_utc
|
||
|
|
||
|
def set_last_door_state_update_time_utc(self, device_id, update_time):
|
||
|
"""Mock to set last door state update time."""
|
||
|
self._last_door_state_update_time_utc = update_time
|
||
|
|
||
|
|
||
|
def _mock_august_lock():
|
||
|
lock = MagicMock(name="august.lock")
|
||
|
type(lock).device_id = PropertyMock(return_value="lock_device_id_1")
|
||
|
return lock
|
||
|
|
||
|
|
||
|
def _mock_august_authenticator():
|
||
|
authenticator = MagicMock(name="august.authenticator")
|
||
|
authenticator.should_refresh = MagicMock(
|
||
|
name="august.authenticator.should_refresh", return_value=0
|
||
|
)
|
||
|
authenticator.refresh_access_token = MagicMock(
|
||
|
name="august.authenticator.refresh_access_token"
|
||
|
)
|
||
|
return authenticator
|
||
|
|
||
|
|
||
|
def _mock_august_authentication(token_text, token_timestamp):
|
||
|
authentication = MagicMock(name="august.authentication")
|
||
|
type(authentication).access_token = PropertyMock(return_value=token_text)
|
||
|
type(authentication).access_token_expires = PropertyMock(
|
||
|
return_value=token_timestamp
|
||
|
)
|
||
|
return authentication
|