Fetch MaxLengthExceeded exception mesage from the translation cache (#113904)
* Fetch MaxLengthExceeded exception mesage from the translation cache * Update homeassistant/components/homeassistant/strings.json Co-authored-by: J. Nick Koston <nick@koston.org> * Add case without homeassistant integration * Fix test --------- Co-authored-by: J. Nick Koston <nick@koston.org>pull/113923/head
parent
6ddef7bbff
commit
8edbf88da1
|
@ -174,6 +174,9 @@
|
|||
"integration_config_error": {
|
||||
"message": "Failed to process config for integration {domain} due to multiple ({errors}) errors. Check the logs for more information."
|
||||
},
|
||||
"max_length_exceeded": {
|
||||
"message": "Value {value} for property {property_name} has a maximum length of {max_length} characters."
|
||||
},
|
||||
"platform_component_load_err": {
|
||||
"message": "Platform error: {domain} - {error}. Check the logs for more information."
|
||||
},
|
||||
|
|
|
@ -281,14 +281,18 @@ class MaxLengthExceeded(HomeAssistantError):
|
|||
"""Initialize error."""
|
||||
super().__init__(
|
||||
self,
|
||||
(
|
||||
f"Value {value} for property {property_name} has a max length of "
|
||||
f"{max_length} characters"
|
||||
),
|
||||
translation_domain="homeassistant",
|
||||
translation_key="max_length_exceeded",
|
||||
translation_placeholders={
|
||||
"value": value,
|
||||
"property_name": property_name,
|
||||
"max_length": str(max_length),
|
||||
},
|
||||
)
|
||||
self.value = value
|
||||
self.property_name = property_name
|
||||
self.max_length = max_length
|
||||
self.generate_message = True
|
||||
|
||||
|
||||
class DependencyError(HomeAssistantError):
|
||||
|
|
|
@ -58,6 +58,7 @@ from homeassistant.exceptions import (
|
|||
ServiceNotFound,
|
||||
)
|
||||
from homeassistant.helpers.json import json_dumps
|
||||
from homeassistant.setup import async_setup_component
|
||||
from homeassistant.util.async_ import create_eager_task
|
||||
import homeassistant.util.dt as dt_util
|
||||
from homeassistant.util.read_only_dict import ReadOnlyDict
|
||||
|
@ -1314,9 +1315,26 @@ async def test_eventbus_max_length_exceeded(hass: HomeAssistant) -> None:
|
|||
"this_event_exceeds_the_max_character_length_even_with_the_new_limit"
|
||||
)
|
||||
|
||||
# Without cached translations the translation key is returned
|
||||
with pytest.raises(MaxLengthExceeded) as exc_info:
|
||||
hass.bus.async_fire(long_evt_name)
|
||||
|
||||
assert str(exc_info.value) == "max_length_exceeded"
|
||||
assert exc_info.value.property_name == "event_type"
|
||||
assert exc_info.value.max_length == 64
|
||||
assert exc_info.value.value == long_evt_name
|
||||
|
||||
# Fetch translations
|
||||
await async_setup_component(hass, "homeassistant", {})
|
||||
|
||||
# With cached translations the formatted message is returned
|
||||
with pytest.raises(MaxLengthExceeded) as exc_info:
|
||||
hass.bus.async_fire(long_evt_name)
|
||||
|
||||
assert (
|
||||
str(exc_info.value)
|
||||
== f"Value {long_evt_name} for property event_type has a maximum length of 64 characters"
|
||||
)
|
||||
assert exc_info.value.property_name == "event_type"
|
||||
assert exc_info.value.max_length == 64
|
||||
assert exc_info.value.value == long_evt_name
|
||||
|
|
Loading…
Reference in New Issue