mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Set deprecated flag on TTS engines replaced by entities in WS list (#124676)
This commit is contained in:
parent
74a12bb802
commit
715f4bd2c3
@ -1086,6 +1086,7 @@ def websocket_list_engines(
|
|||||||
language = msg.get("language")
|
language = msg.get("language")
|
||||||
providers = []
|
providers = []
|
||||||
provider_info: dict[str, Any]
|
provider_info: dict[str, Any]
|
||||||
|
entity_domains: set[str] = set()
|
||||||
|
|
||||||
for entity in component.entities:
|
for entity in component.entities:
|
||||||
provider_info = {
|
provider_info = {
|
||||||
@ -1097,6 +1098,8 @@ def websocket_list_engines(
|
|||||||
language, entity.supported_languages, country
|
language, entity.supported_languages, country
|
||||||
)
|
)
|
||||||
providers.append(provider_info)
|
providers.append(provider_info)
|
||||||
|
if entity.platform:
|
||||||
|
entity_domains.add(entity.platform.platform_name)
|
||||||
for engine_id, provider in manager.providers.items():
|
for engine_id, provider in manager.providers.items():
|
||||||
provider_info = {
|
provider_info = {
|
||||||
"engine_id": engine_id,
|
"engine_id": engine_id,
|
||||||
@ -1106,6 +1109,8 @@ def websocket_list_engines(
|
|||||||
provider_info["supported_languages"] = language_util.matches(
|
provider_info["supported_languages"] = language_util.matches(
|
||||||
language, provider.supported_languages, country
|
language, provider.supported_languages, country
|
||||||
)
|
)
|
||||||
|
if engine_id in entity_domains:
|
||||||
|
provider_info["deprecated"] = True
|
||||||
providers.append(provider_info)
|
providers.append(provider_info)
|
||||||
|
|
||||||
connection.send_message(
|
connection.send_message(
|
||||||
|
@ -31,6 +31,7 @@ from .common import (
|
|||||||
SUPPORT_LANGUAGES,
|
SUPPORT_LANGUAGES,
|
||||||
TEST_DOMAIN,
|
TEST_DOMAIN,
|
||||||
MockProvider,
|
MockProvider,
|
||||||
|
MockTTS,
|
||||||
MockTTSEntity,
|
MockTTSEntity,
|
||||||
get_media_source_url,
|
get_media_source_url,
|
||||||
mock_config_entry_setup,
|
mock_config_entry_setup,
|
||||||
@ -38,7 +39,13 @@ from .common import (
|
|||||||
retrieve_media,
|
retrieve_media,
|
||||||
)
|
)
|
||||||
|
|
||||||
from tests.common import async_mock_service, mock_restore_cache
|
from tests.common import (
|
||||||
|
MockModule,
|
||||||
|
async_mock_service,
|
||||||
|
mock_integration,
|
||||||
|
mock_platform,
|
||||||
|
mock_restore_cache,
|
||||||
|
)
|
||||||
from tests.typing import ClientSessionGenerator, WebSocketGenerator
|
from tests.typing import ClientSessionGenerator, WebSocketGenerator
|
||||||
|
|
||||||
ORIG_WRITE_TAGS = tts.SpeechManager.write_tags
|
ORIG_WRITE_TAGS = tts.SpeechManager.write_tags
|
||||||
@ -1635,6 +1642,53 @@ async def test_ws_list_engines(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_ws_list_engines_deprecated(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
hass_ws_client: WebSocketGenerator,
|
||||||
|
mock_tts_entity: MockTTSEntity,
|
||||||
|
) -> None:
|
||||||
|
"""Test listing tts engines.
|
||||||
|
|
||||||
|
This test asserts the deprecated flag is set on a legacy engine whose integration
|
||||||
|
also provides tts entities.
|
||||||
|
"""
|
||||||
|
|
||||||
|
mock_provider = MockProvider(DEFAULT_LANG)
|
||||||
|
mock_provider_2 = MockProvider(DEFAULT_LANG)
|
||||||
|
mock_integration(hass, MockModule(domain="test"))
|
||||||
|
mock_platform(hass, "test.tts", MockTTS(mock_provider))
|
||||||
|
mock_integration(hass, MockModule(domain="test_2"))
|
||||||
|
mock_platform(hass, "test_2.tts", MockTTS(mock_provider_2))
|
||||||
|
await async_setup_component(
|
||||||
|
hass, "tts", {"tts": [{"platform": "test"}, {"platform": "test_2"}]}
|
||||||
|
)
|
||||||
|
await mock_config_entry_setup(hass, mock_tts_entity)
|
||||||
|
|
||||||
|
client = await hass_ws_client()
|
||||||
|
|
||||||
|
await client.send_json_auto_id({"type": "tts/engine/list"})
|
||||||
|
|
||||||
|
msg = await client.receive_json()
|
||||||
|
assert msg["success"]
|
||||||
|
assert msg["result"] == {
|
||||||
|
"providers": [
|
||||||
|
{
|
||||||
|
"engine_id": "tts.test",
|
||||||
|
"supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"deprecated": True,
|
||||||
|
"engine_id": "test",
|
||||||
|
"supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"engine_id": "test_2",
|
||||||
|
"supported_languages": ["de_CH", "de_DE", "en_GB", "en_US"],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("setup", "engine_id"),
|
("setup", "engine_id"),
|
||||||
[
|
[
|
||||||
|
Loading…
x
Reference in New Issue
Block a user