Add support for service translations (#95984)
This commit is contained in:
parent
f12f8bca03
commit
f054de0ad5
7 changed files with 483 additions and 119 deletions
|
@ -1,6 +1,8 @@
|
|||
"""Test service helpers."""
|
||||
from collections import OrderedDict
|
||||
from collections.abc import Iterable
|
||||
from copy import deepcopy
|
||||
from typing import Any
|
||||
from unittest.mock import AsyncMock, Mock, patch
|
||||
|
||||
import pytest
|
||||
|
@ -556,13 +558,47 @@ async def test_async_get_all_descriptions(hass: HomeAssistant) -> None:
|
|||
|
||||
logger = hass.components.logger
|
||||
logger_config = {logger.DOMAIN: {}}
|
||||
await async_setup_component(hass, logger.DOMAIN, logger_config)
|
||||
descriptions = await service.async_get_all_descriptions(hass)
|
||||
|
||||
async def async_get_translations(
|
||||
hass: HomeAssistant,
|
||||
language: str,
|
||||
category: str,
|
||||
integrations: Iterable[str] | None = None,
|
||||
config_flow: bool | None = None,
|
||||
) -> dict[str, Any]:
|
||||
"""Return all backend translations."""
|
||||
translation_key_prefix = f"component.{logger.DOMAIN}.services.set_default_level"
|
||||
return {
|
||||
f"{translation_key_prefix}.name": "Translated name",
|
||||
f"{translation_key_prefix}.description": "Translated description",
|
||||
f"{translation_key_prefix}.fields.level.name": "Field name",
|
||||
f"{translation_key_prefix}.fields.level.description": "Field description",
|
||||
}
|
||||
|
||||
with patch(
|
||||
"homeassistant.helpers.service.translation.async_get_translations",
|
||||
side_effect=async_get_translations,
|
||||
):
|
||||
await async_setup_component(hass, logger.DOMAIN, logger_config)
|
||||
descriptions = await service.async_get_all_descriptions(hass)
|
||||
|
||||
assert len(descriptions) == 2
|
||||
|
||||
assert "description" in descriptions[logger.DOMAIN]["set_level"]
|
||||
assert "fields" in descriptions[logger.DOMAIN]["set_level"]
|
||||
assert descriptions[logger.DOMAIN]["set_default_level"]["name"] == "Translated name"
|
||||
assert (
|
||||
descriptions[logger.DOMAIN]["set_default_level"]["description"]
|
||||
== "Translated description"
|
||||
)
|
||||
assert (
|
||||
descriptions[logger.DOMAIN]["set_default_level"]["fields"]["level"]["name"]
|
||||
== "Field name"
|
||||
)
|
||||
assert (
|
||||
descriptions[logger.DOMAIN]["set_default_level"]["fields"]["level"][
|
||||
"description"
|
||||
]
|
||||
== "Field description"
|
||||
)
|
||||
|
||||
hass.services.async_register(logger.DOMAIN, "new_service", lambda x: None, None)
|
||||
service.async_set_service_schema(
|
||||
|
@ -602,7 +638,6 @@ async def test_async_get_all_descriptions(hass: HomeAssistant) -> None:
|
|||
"another_service_with_response",
|
||||
{"description": "response service"},
|
||||
)
|
||||
|
||||
descriptions = await service.async_get_all_descriptions(hass)
|
||||
assert "another_new_service" in descriptions[logger.DOMAIN]
|
||||
assert "service_with_optional_response" in descriptions[logger.DOMAIN]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue