92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
"""Tests for the seventeentrack sensor."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import AsyncMock
|
|
|
|
from pyseventeentrack.errors import SeventeenTrackError
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from . import init_integration
|
|
from .conftest import DEFAULT_SUMMARY, get_package
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
async def test_full_valid_config(
|
|
hass: HomeAssistant,
|
|
mock_seventeentrack: AsyncMock,
|
|
mock_config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Ensure everything starts correctly."""
|
|
await init_integration(hass, mock_config_entry)
|
|
assert len(hass.states.async_entity_ids()) == len(DEFAULT_SUMMARY.keys())
|
|
|
|
|
|
async def test_valid_config(
|
|
hass: HomeAssistant,
|
|
mock_seventeentrack: AsyncMock,
|
|
mock_config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Ensure everything starts correctly."""
|
|
await init_integration(hass, mock_config_entry)
|
|
assert len(hass.states.async_entity_ids()) == len(DEFAULT_SUMMARY.keys())
|
|
|
|
|
|
async def test_invalid_config(
|
|
hass: HomeAssistant, mock_config_entry: MockConfigEntry
|
|
) -> None:
|
|
"""Ensure nothing is created when config is wrong."""
|
|
await init_integration(hass, mock_config_entry)
|
|
assert not hass.states.async_entity_ids("sensor")
|
|
|
|
|
|
async def test_login_exception(
|
|
hass: HomeAssistant,
|
|
mock_seventeentrack: AsyncMock,
|
|
mock_config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Ensure everything starts correctly."""
|
|
mock_seventeentrack.return_value.profile.login.side_effect = SeventeenTrackError(
|
|
"Error"
|
|
)
|
|
await init_integration(hass, mock_config_entry)
|
|
assert not hass.states.async_entity_ids("sensor")
|
|
|
|
|
|
async def test_package_error(
|
|
hass: HomeAssistant,
|
|
mock_seventeentrack: AsyncMock,
|
|
mock_config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Ensure package is added correctly when user add a new package."""
|
|
mock_seventeentrack.return_value.profile.packages.side_effect = SeventeenTrackError(
|
|
"Error"
|
|
)
|
|
mock_seventeentrack.return_value.profile.summary.return_value = {}
|
|
|
|
await init_integration(hass, mock_config_entry)
|
|
assert hass.states.get("sensor.17track_package_friendly_name_1") is None
|
|
|
|
|
|
async def test_summary_error(
|
|
hass: HomeAssistant,
|
|
mock_seventeentrack: AsyncMock,
|
|
mock_config_entry: MockConfigEntry,
|
|
) -> None:
|
|
"""Test summary empty if error."""
|
|
package = get_package(status=30)
|
|
mock_seventeentrack.return_value.profile.packages.return_value = [package]
|
|
mock_seventeentrack.return_value.profile.summary.side_effect = SeventeenTrackError(
|
|
"Error"
|
|
)
|
|
|
|
await init_integration(hass, mock_config_entry)
|
|
|
|
assert len(hass.states.async_entity_ids()) == 0
|
|
|
|
assert (
|
|
hass.states.get("sensor.seventeentrack_packages_ready_to_be_picked_up") is None
|
|
)
|