mirror of https://github.com/home-assistant/core
78 lines
2.8 KiB
Python
78 lines
2.8 KiB
Python
"""Tests for the Nextcloud update entity."""
|
|
|
|
from copy import deepcopy
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
from syrupy.assertion import SnapshotAssertion
|
|
|
|
from homeassistant.const import STATE_OFF, STATE_ON, Platform
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import entity_registry as er
|
|
|
|
from . import init_integration
|
|
from .const import NC_DATA, VALID_CONFIG
|
|
|
|
from tests.common import snapshot_platform
|
|
|
|
|
|
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
|
|
async def test_async_setup_entry(
|
|
hass: HomeAssistant,
|
|
entity_registry: er.EntityRegistry,
|
|
snapshot: SnapshotAssertion,
|
|
) -> None:
|
|
"""Test a successful setup entry."""
|
|
with patch("homeassistant.components.nextcloud.PLATFORMS", [Platform.UPDATE]):
|
|
entry = await init_integration(hass, VALID_CONFIG, NC_DATA)
|
|
|
|
await snapshot_platform(hass, entity_registry, snapshot, entry.entry_id)
|
|
|
|
|
|
async def test_setup_entity_without_update(
|
|
hass: HomeAssistant, snapshot: SnapshotAssertion
|
|
) -> None:
|
|
"""Test update entity is created w/o available update."""
|
|
with patch("homeassistant.components.nextcloud.PLATFORMS", [Platform.UPDATE]):
|
|
await init_integration(hass, VALID_CONFIG, NC_DATA)
|
|
|
|
states = hass.states.async_all()
|
|
assert len(states) == 1
|
|
assert states[0].state == STATE_OFF
|
|
assert states[0].attributes["installed_version"] == "28.0.4.1"
|
|
assert states[0].attributes["latest_version"] == "28.0.4.1"
|
|
assert (
|
|
states[0].attributes["release_url"] == "https://nextcloud.com/changelog/#28-0-4"
|
|
)
|
|
|
|
|
|
async def test_setup_entity_with_update(
|
|
hass: HomeAssistant, snapshot: SnapshotAssertion
|
|
) -> None:
|
|
"""Test update entity is created with available update."""
|
|
data = deepcopy(NC_DATA)
|
|
data["nextcloud"]["system"]["update"]["available"] = True
|
|
data["nextcloud"]["system"]["update"]["available_version"] = "30.0.0.0"
|
|
with patch("homeassistant.components.nextcloud.PLATFORMS", [Platform.UPDATE]):
|
|
await init_integration(hass, VALID_CONFIG, data)
|
|
|
|
states = hass.states.async_all()
|
|
assert len(states) == 1
|
|
assert states[0].state == STATE_ON
|
|
assert states[0].attributes["installed_version"] == "28.0.4.1"
|
|
assert states[0].attributes["latest_version"] == "30.0.0.0"
|
|
assert (
|
|
states[0].attributes["release_url"] == "https://nextcloud.com/changelog/#30-0-0"
|
|
)
|
|
|
|
|
|
async def test_setup_no_entity(hass: HomeAssistant) -> None:
|
|
"""Test no update entity is created, when no data available."""
|
|
data = deepcopy(NC_DATA)
|
|
data["nextcloud"]["system"].pop("update") # only nc<28.0.0
|
|
with patch("homeassistant.components.nextcloud.PLATFORMS", [Platform.UPDATE]):
|
|
await init_integration(hass, VALID_CONFIG, data)
|
|
|
|
states = hass.states.async_all()
|
|
assert len(states) == 0
|