90 lines
2.8 KiB
Python
90 lines
2.8 KiB
Python
"""Tests for the init."""
|
|
from unittest.mock import Mock, patch
|
|
|
|
from homeassistant.components import onboarding
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from . import mock_storage
|
|
|
|
from tests.common import MockUser, mock_coro
|
|
|
|
# Temporarily: if auth not active, always set onboarded=True
|
|
|
|
|
|
async def test_not_setup_views_if_onboarded(hass, hass_storage):
|
|
"""Test if onboarding is done, we don't setup views."""
|
|
mock_storage(hass_storage, {"done": onboarding.STEPS})
|
|
|
|
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):
|
|
"""Test if onboarding is not done, we setup views."""
|
|
with patch(
|
|
"homeassistant.components.onboarding.views.async_setup",
|
|
return_value=mock_coro(),
|
|
) as mock_setup:
|
|
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():
|
|
"""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)
|
|
|
|
hass.data[onboarding.DOMAIN] = {"done": []}
|
|
assert not onboarding.async_is_onboarded(hass)
|
|
|
|
|
|
async def test_is_user_onboarded():
|
|
"""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)
|
|
|
|
hass.data[onboarding.DOMAIN] = {"done": []}
|
|
assert not onboarding.async_is_user_onboarded(hass)
|
|
|
|
|
|
async def test_having_owner_finishes_user_step(hass, hass_storage):
|
|
"""If owner user already exists, mark user step as complete."""
|
|
MockUser(is_owner=True).add_to_hass(hass)
|
|
|
|
with patch(
|
|
"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)
|
|
|
|
done = hass_storage[onboarding.STORAGE_KEY]["data"]["done"]
|
|
assert onboarding.STEP_USER in done
|
|
|
|
|
|
async def test_migration(hass, hass_storage):
|
|
"""Test migrating onboarding to new version."""
|
|
hass_storage[onboarding.STORAGE_KEY] = {"version": 1, "data": {"done": ["user"]}}
|
|
assert await async_setup_component(hass, "onboarding", {})
|
|
assert onboarding.async_is_onboarded(hass)
|