From 976cb434c95d5aa3e586353b1f58fefcc8220faf Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Jul 2024 16:19:46 +0200 Subject: [PATCH] Add CONTROL supported feature to OpenAI conversation entities (#121064) Add CONTROL supported feature to OpenAI --- .../openai_conversation/conversation.py | 4 +++ .../openai_conversation/test_conversation.py | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/homeassistant/components/openai_conversation/conversation.py b/homeassistant/components/openai_conversation/conversation.py index 46be803bcad..cd45381fee6 100644 --- a/homeassistant/components/openai_conversation/conversation.py +++ b/homeassistant/components/openai_conversation/conversation.py @@ -92,6 +92,10 @@ class OpenAIConversationEntity( model="ChatGPT", entry_type=dr.DeviceEntryType.SERVICE, ) + if self.entry.options.get(CONF_LLM_HASS_API): + self._attr_supported_features = ( + conversation.ConversationEntityFeature.CONTROL + ) @property def supported_languages(self) -> list[str] | Literal["*"]: diff --git a/tests/components/openai_conversation/test_conversation.py b/tests/components/openai_conversation/test_conversation.py index 1008482847c..fee1543a0d7 100644 --- a/tests/components/openai_conversation/test_conversation.py +++ b/tests/components/openai_conversation/test_conversation.py @@ -27,6 +27,33 @@ from homeassistant.util import ulid from tests.common import MockConfigEntry +async def test_entity( + hass: HomeAssistant, + mock_config_entry: MockConfigEntry, + mock_init_component, +) -> None: + """Test entity properties.""" + state = hass.states.get("conversation.openai") + assert state + assert state.attributes["supported_features"] == 0 + + hass.config_entries.async_update_entry( + mock_config_entry, + options={ + **mock_config_entry.options, + CONF_LLM_HASS_API: "assist", + }, + ) + await hass.config_entries.async_reload(mock_config_entry.entry_id) + + state = hass.states.get("conversation.openai") + assert state + assert ( + state.attributes["supported_features"] + == conversation.ConversationEntityFeature.CONTROL + ) + + async def test_error_handling( hass: HomeAssistant, mock_config_entry: MockConfigEntry, mock_init_component ) -> None: