Files
core/tests/components/todoist/test_init.py
T

66 lines
1.8 KiB
Python

"""Unit tests for the Todoist integration."""
from http import HTTPStatus
from unittest.mock import AsyncMock
import pytest
from homeassistant.components.todoist.const import (
ASSIGNEE,
CONTENT,
DOMAIN,
LABELS,
PROJECT_NAME,
SERVICE_NEW_TASK,
)
from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant
from .conftest import PROJECT_ID
from tests.common import MockConfigEntry
async def test_load_unload(
hass: HomeAssistant,
setup_integration: None,
todoist_config_entry: MockConfigEntry | None,
) -> None:
"""Test loading and unloading of the config entry."""
entries = hass.config_entries.async_entries(DOMAIN)
assert len(entries) == 1
assert todoist_config_entry.state is ConfigEntryState.LOADED
assert await hass.config_entries.async_unload(todoist_config_entry.entry_id)
assert todoist_config_entry.state is ConfigEntryState.NOT_LOADED
@pytest.mark.usefixtures("setup_integration")
async def test_new_task_service_uses_config_entry(
hass: HomeAssistant,
api: AsyncMock,
) -> None:
"""Test the new_task service reaches the config entry coordinator."""
await hass.services.async_call(
DOMAIN,
SERVICE_NEW_TASK,
{ASSIGNEE: "user", CONTENT: "task", LABELS: ["Label1"], PROJECT_NAME: "Name"},
blocking=True,
)
api.add_task.assert_called_with(
"task", project_id=PROJECT_ID, labels=["Label1"], assignee_id="1"
)
@pytest.mark.parametrize("todoist_api_status", [HTTPStatus.INTERNAL_SERVER_ERROR])
async def test_init_failure(
hass: HomeAssistant,
setup_integration: None,
api: AsyncMock,
todoist_config_entry: MockConfigEntry | None,
) -> None:
"""Test an initialization error on integration load."""
assert todoist_config_entry.state is ConfigEntryState.SETUP_RETRY