core/tests/components/onboarding/test_init.py

95 lines
3.0 KiB
Python
Raw Normal View History

"""Tests for the init."""
from typing import Any
from unittest.mock import Mock, patch
from homeassistant.components import onboarding
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from . import mock_storage
from tests.common import MockUser
# Temporarily: if auth not active, always set onboarded=True
async def test_not_setup_views_if_onboarded(
hass: HomeAssistant, hass_storage: dict[str, Any]
) -> None:
"""Test if onboarding is done, we don't setup views."""
2019-07-31 19:25:30 +00:00
mock_storage(hass_storage, {"done": onboarding.STEPS})
2019-07-31 19:25:30 +00:00
with patch("homeassistant.components.onboarding.views.async_setup") as mock_setup:
assert await async_setup_component(hass, "onboarding", {})
assert len(mock_setup.mock_calls) == 0
assert onboarding.DOMAIN not in hass.data
assert onboarding.async_is_onboarded(hass)
async def test_setup_views_if_not_onboarded(hass: HomeAssistant) -> None:
"""Test if onboarding is not done, we setup views."""
with patch(
2019-07-31 19:25:30 +00:00
"homeassistant.components.onboarding.views.async_setup",
) as mock_setup:
2019-07-31 19:25:30 +00:00
assert await async_setup_component(hass, "onboarding", {})
assert len(mock_setup.mock_calls) == 1
assert onboarding.DOMAIN in hass.data
assert not onboarding.async_is_onboarded(hass)
async def test_is_onboarded() -> None:
"""Test the is onboarded function."""
hass = Mock()
hass.data = {}
assert onboarding.async_is_onboarded(hass)
hass.data[onboarding.DOMAIN] = True
assert onboarding.async_is_onboarded(hass)
2019-07-31 19:25:30 +00:00
hass.data[onboarding.DOMAIN] = {"done": []}
assert not onboarding.async_is_onboarded(hass)
async def test_is_user_onboarded() -> None:
"""Test the is onboarded function."""
hass = Mock()
hass.data = {}
assert onboarding.async_is_user_onboarded(hass)
hass.data[onboarding.DOMAIN] = True
assert onboarding.async_is_user_onboarded(hass)
2019-07-31 19:25:30 +00:00
hass.data[onboarding.DOMAIN] = {"done": []}
assert not onboarding.async_is_user_onboarded(hass)
async def test_having_owner_finishes_user_step(
hass: HomeAssistant, hass_storage: dict[str, Any]
) -> None:
"""If owner user already exists, mark user step as complete."""
MockUser(is_owner=True).add_to_hass(hass)
with patch(
2019-07-31 19:25:30 +00:00
"homeassistant.components.onboarding.views.async_setup"
) as mock_setup, patch.object(onboarding, "STEPS", [onboarding.STEP_USER]):
assert await async_setup_component(hass, "onboarding", {})
assert len(mock_setup.mock_calls) == 0
assert onboarding.DOMAIN not in hass.data
assert onboarding.async_is_onboarded(hass)
2019-07-31 19:25:30 +00:00
done = hass_storage[onboarding.STORAGE_KEY]["data"]["done"]
assert onboarding.STEP_USER in done
async def test_migration(hass: HomeAssistant, hass_storage: dict[str, Any]) -> None:
"""Test migrating onboarding to new version."""
2019-07-31 19:25:30 +00:00
hass_storage[onboarding.STORAGE_KEY] = {"version": 1, "data": {"done": ["user"]}}
assert await async_setup_component(hass, "onboarding", {})
assert onboarding.async_is_onboarded(hass)