core/tests/components/map/test_init.py

119 lines
3.7 KiB
Python

"""Test the Map initialization."""
from collections.abc import Generator
from typing import Any
from unittest.mock import MagicMock, patch
import pytest
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")