core/tests/components/map/test_init.py

119 lines
3.7 KiB
Python

"""Test the Map initialization."""
from typing import Any
from unittest.mock import MagicMock, patch
import pytest
from typing_extensions import Generator
from homeassistant.components.map import DOMAIN
from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant
from homeassistant.helpers import issue_registry as ir
from homeassistant.setup import async_setup_component
from tests.common import MockModule, mock_integration
@pytest.fixture
def mock_onboarding_not_done() -> Generator[MagicMock]:
"""Mock that Home Assistant is currently onboarding."""
with patch(
"homeassistant.components.onboarding.async_is_onboarded",
return_value=False,
) as mock_onboarding:
yield mock_onboarding
@pytest.fixture
def mock_onboarding_done() -> Generator[MagicMock]:
"""Mock that Home Assistant is currently onboarding."""
with patch(
"homeassistant.components.onboarding.async_is_onboarded",
return_value=True,
) as mock_onboarding:
yield mock_onboarding
@pytest.fixture
def mock_create_map_dashboard() -> Generator[MagicMock]:
"""Mock the create map dashboard function."""
with patch(
"homeassistant.components.map._create_map_dashboard",
) as mock_create_map_dashboard:
yield mock_create_map_dashboard
async def test_create_dashboards_when_onboarded(
hass: HomeAssistant,
hass_storage: dict[str, Any],
mock_onboarding_done,
mock_create_map_dashboard,
) -> None:
"""Test we create map dashboard when onboarded."""
# Mock the lovelace integration to prevent it from creating a map dashboard
mock_integration(hass, MockModule("lovelace"))
assert await async_setup_component(hass, DOMAIN, {})
mock_create_map_dashboard.assert_called_once()
assert hass_storage[DOMAIN]["data"] == {"migrated": True}
async def test_create_dashboards_once_when_onboarded(
hass: HomeAssistant,
hass_storage: dict[str, Any],
mock_onboarding_done,
mock_create_map_dashboard,
) -> None:
"""Test we create map dashboard once when onboarded."""
hass_storage[DOMAIN] = {
"version": 1,
"minor_version": 1,
"key": "map",
"data": {"migrated": True},
}
# Mock the lovelace integration to prevent it from creating a map dashboard
mock_integration(hass, MockModule("lovelace"))
assert await async_setup_component(hass, DOMAIN, {})
mock_create_map_dashboard.assert_not_called()
assert hass_storage[DOMAIN]["data"] == {"migrated": True}
async def test_create_dashboards_when_not_onboarded(
hass: HomeAssistant,
hass_storage: dict[str, Any],
mock_onboarding_not_done,
mock_create_map_dashboard,
) -> None:
"""Test we do not create map dashboard when not onboarded."""
# Mock the lovelace integration to prevent it from creating a map dashboard
mock_integration(hass, MockModule("lovelace"))
assert await async_setup_component(hass, DOMAIN, {})
mock_create_map_dashboard.assert_not_called()
assert hass_storage[DOMAIN]["data"] == {"migrated": True}
async def test_create_issue_when_not_manually_configured(
hass: HomeAssistant, issue_registry: ir.IssueRegistry
) -> None:
"""Test creating issue registry issues."""
assert await async_setup_component(hass, DOMAIN, {})
assert not issue_registry.async_get_issue(
HOMEASSISTANT_DOMAIN, "deprecated_yaml_map"
)
async def test_create_issue_when_manually_configured(
hass: HomeAssistant, issue_registry: ir.IssueRegistry
) -> None:
"""Test creating issue registry issues."""
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {}})
assert issue_registry.async_get_issue(HOMEASSISTANT_DOMAIN, "deprecated_yaml_map")