mirror of https://github.com/home-assistant/core
87 lines
2.7 KiB
Python
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
|