mirror of
https://github.com/home-assistant/core.git
synced 2026-09-09 18:24:44 -05:00
Support requesting translations for multiple integrations in a single request (#71979)
This commit is contained in:
@@ -424,7 +424,7 @@ async def test_get_translations(hass, ws_client):
|
||||
"""Test get_translations command."""
|
||||
with patch(
|
||||
"homeassistant.components.frontend.async_get_translations",
|
||||
side_effect=lambda hass, lang, category, integration, config_flow: {
|
||||
side_effect=lambda hass, lang, category, integrations, config_flow: {
|
||||
"lang": lang
|
||||
},
|
||||
):
|
||||
@@ -444,6 +444,58 @@ async def test_get_translations(hass, ws_client):
|
||||
assert msg["result"] == {"resources": {"lang": "nl"}}
|
||||
|
||||
|
||||
async def test_get_translations_for_integrations(hass, ws_client):
|
||||
"""Test get_translations for integrations command."""
|
||||
with patch(
|
||||
"homeassistant.components.frontend.async_get_translations",
|
||||
side_effect=lambda hass, lang, category, integration, config_flow: {
|
||||
"lang": lang,
|
||||
"integration": integration,
|
||||
},
|
||||
):
|
||||
await ws_client.send_json(
|
||||
{
|
||||
"id": 5,
|
||||
"type": "frontend/get_translations",
|
||||
"integration": ["frontend", "http"],
|
||||
"language": "nl",
|
||||
"category": "lang",
|
||||
}
|
||||
)
|
||||
msg = await ws_client.receive_json()
|
||||
|
||||
assert msg["id"] == 5
|
||||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
assert set(msg["result"]["resources"]["integration"]) == {"frontend", "http"}
|
||||
|
||||
|
||||
async def test_get_translations_for_single_integration(hass, ws_client):
|
||||
"""Test get_translations for integration command."""
|
||||
with patch(
|
||||
"homeassistant.components.frontend.async_get_translations",
|
||||
side_effect=lambda hass, lang, category, integrations, config_flow: {
|
||||
"lang": lang,
|
||||
"integration": integrations,
|
||||
},
|
||||
):
|
||||
await ws_client.send_json(
|
||||
{
|
||||
"id": 5,
|
||||
"type": "frontend/get_translations",
|
||||
"integration": "http",
|
||||
"language": "nl",
|
||||
"category": "lang",
|
||||
}
|
||||
)
|
||||
msg = await ws_client.receive_json()
|
||||
|
||||
assert msg["id"] == 5
|
||||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
assert msg["result"] == {"resources": {"lang": "nl", "integration": ["http"]}}
|
||||
|
||||
|
||||
async def test_auth_load(hass):
|
||||
"""Test auth component loaded by default."""
|
||||
frontend = await async_get_integration(hass, "frontend")
|
||||
|
||||
@@ -290,12 +290,29 @@ async def test_translation_merging_loaded_apart(hass, caplog):
|
||||
assert "component.sensor.state.moon__phase.first_quarter" in translations
|
||||
|
||||
translations = await translation.async_get_translations(
|
||||
hass, "en", "state", integration="sensor"
|
||||
hass, "en", "state", integrations={"sensor"}
|
||||
)
|
||||
|
||||
assert "component.sensor.state.moon__phase.first_quarter" in translations
|
||||
|
||||
|
||||
async def test_translation_merging_loaded_together(hass, caplog):
|
||||
"""Test we merge translations of two integrations when they are loaded at the same time."""
|
||||
hass.config.components.add("hue")
|
||||
hass.config.components.add("homekit")
|
||||
hue_translations = await translation.async_get_translations(
|
||||
hass, "en", "config", integrations={"hue"}
|
||||
)
|
||||
homekit_translations = await translation.async_get_translations(
|
||||
hass, "en", "config", integrations={"homekit"}
|
||||
)
|
||||
|
||||
translations = await translation.async_get_translations(
|
||||
hass, "en", "config", integrations={"hue", "homekit"}
|
||||
)
|
||||
assert translations == hue_translations | homekit_translations
|
||||
|
||||
|
||||
async def test_caching(hass):
|
||||
"""Test we cache data."""
|
||||
hass.config.components.add("sensor")
|
||||
@@ -320,14 +337,14 @@ async def test_caching(hass):
|
||||
)
|
||||
|
||||
load_sensor_only = await translation.async_get_translations(
|
||||
hass, "en", "state", integration="sensor"
|
||||
hass, "en", "state", integrations={"sensor"}
|
||||
)
|
||||
assert load_sensor_only
|
||||
for key in load_sensor_only:
|
||||
assert key.startswith("component.sensor.state.")
|
||||
|
||||
load_light_only = await translation.async_get_translations(
|
||||
hass, "en", "state", integration="light"
|
||||
hass, "en", "state", integrations={"light"}
|
||||
)
|
||||
assert load_light_only
|
||||
for key in load_light_only:
|
||||
@@ -341,7 +358,7 @@ async def test_caching(hass):
|
||||
side_effect=translation._build_resources,
|
||||
) as mock_build:
|
||||
load_sensor_only = await translation.async_get_translations(
|
||||
hass, "en", "title", integration="sensor"
|
||||
hass, "en", "title", integrations={"sensor"}
|
||||
)
|
||||
assert load_sensor_only
|
||||
for key in load_sensor_only:
|
||||
@@ -349,12 +366,12 @@ async def test_caching(hass):
|
||||
assert len(mock_build.mock_calls) == 0
|
||||
|
||||
assert await translation.async_get_translations(
|
||||
hass, "en", "title", integration="sensor"
|
||||
hass, "en", "title", integrations={"sensor"}
|
||||
)
|
||||
assert len(mock_build.mock_calls) == 0
|
||||
|
||||
load_light_only = await translation.async_get_translations(
|
||||
hass, "en", "title", integration="media_player"
|
||||
hass, "en", "title", integrations={"media_player"}
|
||||
)
|
||||
assert load_light_only
|
||||
for key in load_light_only:
|
||||
|
||||
Reference in New Issue
Block a user