mirror of
https://github.com/home-assistant/core.git
synced 2026-08-06 21:35:13 +01:00
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
66 lines
1.8 KiB
Python
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
|