mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-20 00:46:29 +00:00

It seems that the codebase is not formatted with the latest ruff version. This PR reformats the codebase with ruff 0.5.7.
101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
"""Test check for multiple data disks."""
|
|
|
|
# pylint: disable=import-error
|
|
from dataclasses import replace
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from supervisor.const import CoreState
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.resolution.checks.multiple_data_disks import CheckMultipleDataDisks
|
|
from supervisor.resolution.const import ContextType, IssueType, SuggestionType
|
|
from supervisor.resolution.data import Issue, Suggestion
|
|
|
|
from tests.dbus_service_mocks.base import DBusServiceMock
|
|
from tests.dbus_service_mocks.udisks2_block import Block as BlockService
|
|
|
|
|
|
@pytest.fixture(name="sda1_block_service")
|
|
async def fixture_sda1_block_service(
|
|
udisks2_services: dict[str, DBusServiceMock | dict[str, DBusServiceMock]],
|
|
) -> BlockService:
|
|
"""Return sda1 block service."""
|
|
yield udisks2_services["udisks2_block"][
|
|
"/org/freedesktop/UDisks2/block_devices/sda1"
|
|
]
|
|
|
|
|
|
async def test_base(coresys: CoreSys):
|
|
"""Test check basics."""
|
|
multiple_data_disks = CheckMultipleDataDisks(coresys)
|
|
assert multiple_data_disks.slug == "multiple_data_disks"
|
|
assert multiple_data_disks.enabled
|
|
|
|
|
|
async def test_check(coresys: CoreSys, sda1_block_service: BlockService):
|
|
"""Test check."""
|
|
multiple_data_disks = CheckMultipleDataDisks(coresys)
|
|
coresys.core.state = CoreState.RUNNING
|
|
|
|
await multiple_data_disks.run_check()
|
|
|
|
assert len(coresys.resolution.issues) == 0
|
|
assert len(coresys.resolution.suggestions) == 0
|
|
|
|
sda1_block_service.emit_properties_changed({"IdLabel": "hassos-data"})
|
|
await sda1_block_service.ping()
|
|
|
|
await multiple_data_disks.run_check()
|
|
|
|
assert coresys.resolution.issues == [
|
|
Issue(IssueType.MULTIPLE_DATA_DISKS, ContextType.SYSTEM, reference="/dev/sda1")
|
|
]
|
|
assert coresys.resolution.suggestions == [
|
|
Suggestion(
|
|
SuggestionType.RENAME_DATA_DISK, ContextType.SYSTEM, reference="/dev/sda1"
|
|
),
|
|
Suggestion(
|
|
SuggestionType.ADOPT_DATA_DISK, ContextType.SYSTEM, reference="/dev/sda1"
|
|
),
|
|
]
|
|
|
|
|
|
async def test_approve(coresys: CoreSys, sda1_block_service: BlockService):
|
|
"""Test approve."""
|
|
multiple_data_disks = CheckMultipleDataDisks(coresys)
|
|
coresys.core.state = CoreState.RUNNING
|
|
|
|
assert not await multiple_data_disks.approve_check(reference="/dev/sda1")
|
|
|
|
sda1_block_service.fixture = replace(
|
|
sda1_block_service.fixture, IdLabel="hassos-data"
|
|
)
|
|
|
|
assert await multiple_data_disks.approve_check(reference="/dev/sda1")
|
|
|
|
|
|
async def test_did_run(coresys: CoreSys):
|
|
"""Test that the check ran as expected."""
|
|
multiple_data_disks = CheckMultipleDataDisks(coresys)
|
|
should_run = multiple_data_disks.states
|
|
should_not_run = [state for state in CoreState if state not in should_run]
|
|
assert len(should_run) != 0
|
|
assert len(should_not_run) != 0
|
|
|
|
with patch(
|
|
"supervisor.resolution.checks.multiple_data_disks.CheckMultipleDataDisks.run_check",
|
|
return_value=None,
|
|
) as check:
|
|
for state in should_run:
|
|
coresys.core.state = state
|
|
await multiple_data_disks()
|
|
check.assert_called_once()
|
|
check.reset_mock()
|
|
|
|
for state in should_not_run:
|
|
coresys.core.state = state
|
|
await multiple_data_disks()
|
|
check.assert_not_called()
|
|
check.reset_mock()
|