mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 00:37:13 +00:00
Ensure august status is current when integration loads (#64027)
This commit is contained in:
parent
88f4aeaa22
commit
06fd75be7e
@ -140,6 +140,11 @@ class AugustData(AugustSubscriberMixin):
|
|||||||
pubnub.subscribe(self.async_pubnub_message)
|
pubnub.subscribe(self.async_pubnub_message)
|
||||||
self._pubnub_unsub = async_create_pubnub(user_data["UserID"], pubnub)
|
self._pubnub_unsub = async_create_pubnub(user_data["UserID"], pubnub)
|
||||||
|
|
||||||
|
if self._locks_by_id:
|
||||||
|
await asyncio.gather(
|
||||||
|
*[self.async_status_async(lock_id) for lock_id in self._locks_by_id]
|
||||||
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_pubnub_message(self, device_id, date_time, message):
|
def async_pubnub_message(self, device_id, date_time, message):
|
||||||
"""Process a pubnub message."""
|
"""Process a pubnub message."""
|
||||||
@ -247,6 +252,15 @@ class AugustData(AugustSubscriberMixin):
|
|||||||
device_id,
|
device_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def async_status_async(self, device_id):
|
||||||
|
"""Request status of the the device but do not wait for a response since it will come via pubnub."""
|
||||||
|
return await self._async_call_api_op_requires_bridge(
|
||||||
|
device_id,
|
||||||
|
self._api.async_status_async,
|
||||||
|
self._august_gateway.access_token,
|
||||||
|
device_id,
|
||||||
|
)
|
||||||
|
|
||||||
async def async_lock_async(self, device_id):
|
async def async_lock_async(self, device_id):
|
||||||
"""Lock the device but do not wait for a response since it will come via pubnub."""
|
"""Lock the device but do not wait for a response since it will come via pubnub."""
|
||||||
return await self._async_call_api_op_requires_bridge(
|
return await self._async_call_api_op_requires_bridge(
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "august",
|
"domain": "august",
|
||||||
"name": "August",
|
"name": "August",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/august",
|
"documentation": "https://www.home-assistant.io/integrations/august",
|
||||||
"requirements": ["yalexs==1.1.17"],
|
"requirements": ["yalexs==1.1.18"],
|
||||||
"codeowners": ["@bdraco"],
|
"codeowners": ["@bdraco"],
|
||||||
"dhcp": [
|
"dhcp": [
|
||||||
{
|
{
|
||||||
|
@ -2503,7 +2503,7 @@ xs1-api-client==3.0.0
|
|||||||
yalesmartalarmclient==0.3.7
|
yalesmartalarmclient==0.3.7
|
||||||
|
|
||||||
# homeassistant.components.august
|
# homeassistant.components.august
|
||||||
yalexs==1.1.17
|
yalexs==1.1.18
|
||||||
|
|
||||||
# homeassistant.components.yeelight
|
# homeassistant.components.yeelight
|
||||||
yeelight==0.7.8
|
yeelight==0.7.8
|
||||||
|
@ -1525,7 +1525,7 @@ xmltodict==0.12.0
|
|||||||
yalesmartalarmclient==0.3.7
|
yalesmartalarmclient==0.3.7
|
||||||
|
|
||||||
# homeassistant.components.august
|
# homeassistant.components.august
|
||||||
yalexs==1.1.17
|
yalexs==1.1.18
|
||||||
|
|
||||||
# homeassistant.components.yeelight
|
# homeassistant.components.yeelight
|
||||||
yeelight==0.7.8
|
yeelight==0.7.8
|
||||||
|
@ -162,10 +162,17 @@ async def _create_august_with_devices( # noqa: C901
|
|||||||
"unlock_return_activities"
|
"unlock_return_activities"
|
||||||
] = unlock_return_activities_side_effect
|
] = unlock_return_activities_side_effect
|
||||||
|
|
||||||
return await _mock_setup_august_with_api_side_effects(
|
api_instance, entry = await _mock_setup_august_with_api_side_effects(
|
||||||
hass, api_call_side_effects, pubnub
|
hass, api_call_side_effects, pubnub
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if device_data["locks"]:
|
||||||
|
# Ensure we sync status when the integration is loaded if there
|
||||||
|
# are any locks
|
||||||
|
assert api_instance.async_status_async.mock_calls
|
||||||
|
|
||||||
|
return entry
|
||||||
|
|
||||||
|
|
||||||
async def _mock_setup_august_with_api_side_effects(hass, api_call_side_effects, pubnub):
|
async def _mock_setup_august_with_api_side_effects(hass, api_call_side_effects, pubnub):
|
||||||
api_instance = MagicMock(name="Api")
|
api_instance = MagicMock(name="Api")
|
||||||
@ -207,9 +214,10 @@ async def _mock_setup_august_with_api_side_effects(hass, api_call_side_effects,
|
|||||||
|
|
||||||
api_instance.async_unlock_async = AsyncMock()
|
api_instance.async_unlock_async = AsyncMock()
|
||||||
api_instance.async_lock_async = AsyncMock()
|
api_instance.async_lock_async = AsyncMock()
|
||||||
|
api_instance.async_status_async = AsyncMock()
|
||||||
api_instance.async_get_user = AsyncMock(return_value={"UserID": "abc"})
|
api_instance.async_get_user = AsyncMock(return_value={"UserID": "abc"})
|
||||||
|
|
||||||
return await _mock_setup_august(hass, api_instance, pubnub)
|
return api_instance, await _mock_setup_august(hass, api_instance, pubnub)
|
||||||
|
|
||||||
|
|
||||||
def _mock_august_authentication(token_text, token_timestamp, state):
|
def _mock_august_authentication(token_text, token_timestamp, state):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user