core/tests/components/seventeentrack/test_repairs.py

87 lines
2.7 KiB
Python

"""Tests for the seventeentrack repair flow."""
from unittest.mock import AsyncMock
from freezegun.api import FrozenDateTimeFactory
from homeassistant.components.repairs import DOMAIN as REPAIRS_DOMAIN
from homeassistant.components.seventeentrack import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import issue_registry as ir
from homeassistant.setup import async_setup_component
from . import goto_future, init_integration
from .conftest import DEFAULT_SUMMARY_LENGTH, get_package
from tests.common import MockConfigEntry
from tests.components.repairs import process_repair_fix_flow, start_repair_fix_flow
from tests.typing import ClientSessionGenerator
async def test_repair(
hass: HomeAssistant,
mock_seventeentrack: AsyncMock,
issue_registry: ir.IssueRegistry,
hass_client: ClientSessionGenerator,
mock_config_entry: MockConfigEntry,
freezer: FrozenDateTimeFactory,
) -> None:
"""Ensure everything starts correctly."""
await init_integration(hass, mock_config_entry) # 2
assert len(hass.states.async_entity_ids()) == DEFAULT_SUMMARY_LENGTH
assert len(issue_registry.issues) == 1
package = get_package()
mock_seventeentrack.return_value.profile.packages.return_value = [package]
await goto_future(hass, freezer)
assert hass.states.get("sensor.17track_package_friendly_name_1")
assert len(hass.states.async_entity_ids()) == DEFAULT_SUMMARY_LENGTH + 1
assert "deprecated" not in mock_config_entry.data
repair_issue = issue_registry.async_get_issue(
domain=DOMAIN, issue_id=f"deprecate_sensor_{mock_config_entry.entry_id}"
)
assert await async_setup_component(hass, REPAIRS_DOMAIN, {REPAIRS_DOMAIN: {}})
client = await hass_client()
data = await start_repair_fix_flow(client, DOMAIN, repair_issue.issue_id)
flow_id = data["flow_id"]
assert data == {
"type": "form",
"flow_id": flow_id,
"handler": DOMAIN,
"step_id": "confirm",
"data_schema": [],
"errors": None,
"description_placeholders": None,
"last_step": None,
"preview": None,
}
data = await process_repair_fix_flow(client, flow_id)
flow_id = data["flow_id"]
assert data == {
"type": "create_entry",
"handler": DOMAIN,
"flow_id": flow_id,
"description": None,
"description_placeholders": None,
}
assert mock_config_entry.data["deprecated"]
repair_issue = issue_registry.async_get_issue(
domain=DOMAIN, issue_id="deprecate_sensor"
)
assert repair_issue is None
await goto_future(hass, freezer)
assert len(hass.states.async_entity_ids()) == DEFAULT_SUMMARY_LENGTH