mirror of
https://github.com/home-assistant/core.git
synced 2025-11-13 21:10:25 +00:00
Add service to retrieve schedule configuration (#121904)
This commit is contained in:
@@ -8,10 +8,12 @@ from unittest.mock import patch
|
||||
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.schedule import STORAGE_VERSION, STORAGE_VERSION_MINOR
|
||||
from homeassistant.components.schedule.const import (
|
||||
ATTR_NEXT_EVENT,
|
||||
CONF_ALL_DAYS,
|
||||
CONF_DATA,
|
||||
CONF_FRIDAY,
|
||||
CONF_FROM,
|
||||
@@ -23,12 +25,14 @@ from homeassistant.components.schedule.const import (
|
||||
CONF_TUESDAY,
|
||||
CONF_WEDNESDAY,
|
||||
DOMAIN,
|
||||
SERVICE_GET,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_EDITABLE,
|
||||
ATTR_FRIENDLY_NAME,
|
||||
ATTR_ICON,
|
||||
ATTR_NAME,
|
||||
CONF_ENTITY_ID,
|
||||
CONF_ICON,
|
||||
CONF_ID,
|
||||
CONF_NAME,
|
||||
@@ -754,3 +758,66 @@ async def test_ws_create(
|
||||
assert result["party_mode"][CONF_MONDAY] == [
|
||||
{CONF_FROM: "12:00:00", CONF_TO: saved_to}
|
||||
]
|
||||
|
||||
|
||||
async def test_service_get(
|
||||
hass: HomeAssistant,
|
||||
hass_ws_client: WebSocketGenerator,
|
||||
snapshot: SnapshotAssertion,
|
||||
schedule_setup: Callable[..., Coroutine[Any, Any, bool]],
|
||||
) -> None:
|
||||
"""Test getting a single schedule via service."""
|
||||
assert await schedule_setup()
|
||||
|
||||
entity_id = "schedule.from_storage"
|
||||
|
||||
# Test retrieving a single schedule via service call
|
||||
service_result = await hass.services.async_call(
|
||||
DOMAIN,
|
||||
SERVICE_GET,
|
||||
{
|
||||
CONF_ENTITY_ID: entity_id,
|
||||
},
|
||||
blocking=True,
|
||||
return_response=True,
|
||||
)
|
||||
result = service_result.get(entity_id)
|
||||
|
||||
assert set(result) == CONF_ALL_DAYS
|
||||
assert result == snapshot(name=f"{entity_id}-get")
|
||||
|
||||
# Now we update the schedule via WS
|
||||
client = await hass_ws_client(hass)
|
||||
await client.send_json(
|
||||
{
|
||||
"id": 1,
|
||||
"type": f"{DOMAIN}/update",
|
||||
f"{DOMAIN}_id": entity_id.rsplit(".", maxsplit=1)[-1],
|
||||
CONF_NAME: "Party pooper",
|
||||
CONF_ICON: "mdi:party-pooper",
|
||||
CONF_MONDAY: [],
|
||||
CONF_TUESDAY: [],
|
||||
CONF_WEDNESDAY: [{CONF_FROM: "17:00:00", CONF_TO: "19:00:00"}],
|
||||
CONF_THURSDAY: [],
|
||||
CONF_FRIDAY: [],
|
||||
CONF_SATURDAY: [],
|
||||
CONF_SUNDAY: [],
|
||||
}
|
||||
)
|
||||
resp = await client.receive_json()
|
||||
assert resp["success"]
|
||||
|
||||
# Test retrieving the schedule via service call after WS update
|
||||
service_result = await hass.services.async_call(
|
||||
DOMAIN,
|
||||
SERVICE_GET,
|
||||
{
|
||||
CONF_ENTITY_ID: entity_id,
|
||||
},
|
||||
blocking=True,
|
||||
return_response=True,
|
||||
)
|
||||
result = service_result.get(entity_id)
|
||||
|
||||
assert set(result) == CONF_ALL_DAYS
|
||||
assert result == snapshot(name=f"{entity_id}-get-after-update")
|
||||
|
||||
Reference in New Issue
Block a user