mirror of
https://github.com/home-assistant/core.git
synced 2025-12-20 02:48:57 +00:00
120 lines
3.9 KiB
Python
120 lines
3.9 KiB
Python
"""Test issue template functions."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import issue_registry as ir
|
|
from homeassistant.util import dt as dt_util
|
|
|
|
from tests.helpers.template.helpers import assert_result_info, render_to_info
|
|
|
|
|
|
async def test_issues(hass: HomeAssistant, issue_registry: ir.IssueRegistry) -> None:
|
|
"""Test issues function."""
|
|
# Test no issues
|
|
info = render_to_info(hass, "{{ issues() }}")
|
|
assert_result_info(info, {})
|
|
assert info.rate_limit is None
|
|
|
|
# Test persistent issue
|
|
ir.async_create_issue(
|
|
hass,
|
|
"test",
|
|
"issue 1",
|
|
breaks_in_ha_version="2023.7",
|
|
is_fixable=True,
|
|
is_persistent=True,
|
|
learn_more_url="https://theuselessweb.com",
|
|
severity="error",
|
|
translation_key="abc_1234",
|
|
translation_placeholders={"abc": "123"},
|
|
)
|
|
await hass.async_block_till_done()
|
|
created_issue = issue_registry.async_get_issue("test", "issue 1")
|
|
info = render_to_info(hass, "{{ issues()['test', 'issue 1'] }}")
|
|
assert_result_info(info, created_issue.to_json())
|
|
assert info.rate_limit is None
|
|
|
|
# Test fixed issue
|
|
ir.async_delete_issue(hass, "test", "issue 1")
|
|
await hass.async_block_till_done()
|
|
info = render_to_info(hass, "{{ issues() }}")
|
|
assert_result_info(info, {})
|
|
assert info.rate_limit is None
|
|
|
|
issue = ir.IssueEntry(
|
|
active=False,
|
|
breaks_in_ha_version="2025.12",
|
|
created=dt_util.utcnow(),
|
|
data=None,
|
|
dismissed_version=None,
|
|
domain="test",
|
|
is_fixable=False,
|
|
is_persistent=False,
|
|
issue_domain="test",
|
|
issue_id="issue 2",
|
|
learn_more_url=None,
|
|
severity="warning",
|
|
translation_key="abc_1234",
|
|
translation_placeholders={"abc": "123"},
|
|
)
|
|
# Add non active issue
|
|
issue_registry.issues[("test", "issue 2")] = issue
|
|
# Test non active issue is omitted
|
|
issue_entry = issue_registry.async_get_issue("test", "issue 2")
|
|
assert issue_entry
|
|
issue_2_created = issue_entry.created
|
|
assert issue_entry and not issue_entry.active
|
|
info = render_to_info(hass, "{{ issues() }}")
|
|
assert_result_info(info, {})
|
|
assert info.rate_limit is None
|
|
|
|
# Load and activate the issue
|
|
ir.async_create_issue(
|
|
hass=hass,
|
|
breaks_in_ha_version="2025.12",
|
|
data=None,
|
|
domain="test",
|
|
is_fixable=False,
|
|
is_persistent=False,
|
|
issue_domain="test",
|
|
issue_id="issue 2",
|
|
learn_more_url=None,
|
|
severity="warning",
|
|
translation_key="abc_1234",
|
|
translation_placeholders={"abc": "123"},
|
|
)
|
|
activated_issue_entry = issue_registry.async_get_issue("test", "issue 2")
|
|
assert activated_issue_entry and activated_issue_entry.active
|
|
assert issue_2_created == activated_issue_entry.created
|
|
info = render_to_info(hass, "{{ issues()['test', 'issue 2'] }}")
|
|
assert_result_info(info, activated_issue_entry.to_json())
|
|
assert info.rate_limit is None
|
|
|
|
|
|
async def test_issue(hass: HomeAssistant, issue_registry: ir.IssueRegistry) -> None:
|
|
"""Test issue function."""
|
|
# Test non existent issue
|
|
info = render_to_info(hass, "{{ issue('non_existent', 'issue') }}")
|
|
assert_result_info(info, None)
|
|
assert info.rate_limit is None
|
|
|
|
# Test existing issue
|
|
ir.async_create_issue(
|
|
hass,
|
|
"test",
|
|
"issue 1",
|
|
breaks_in_ha_version="2023.7",
|
|
is_fixable=True,
|
|
is_persistent=True,
|
|
learn_more_url="https://theuselessweb.com",
|
|
severity="error",
|
|
translation_key="abc_1234",
|
|
translation_placeholders={"abc": "123"},
|
|
)
|
|
await hass.async_block_till_done()
|
|
created_issue = issue_registry.async_get_issue("test", "issue 1")
|
|
info = render_to_info(hass, "{{ issue('test', 'issue 1') }}")
|
|
assert_result_info(info, created_issue.to_json())
|
|
assert info.rate_limit is None
|