"""Tests for the Mealie calendar.""" from datetime import date from http import HTTPStatus from unittest.mock import AsyncMock from syrupy.assertion import SnapshotAssertion from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er from . import setup_integration from tests.common import MockConfigEntry, snapshot_platform from tests.typing import ClientSessionGenerator async def test_api_calendar( hass: HomeAssistant, snapshot: SnapshotAssertion, mock_mealie_client: AsyncMock, mock_config_entry: MockConfigEntry, hass_client: ClientSessionGenerator, ) -> None: """Test the API returns the calendar.""" await setup_integration(hass, mock_config_entry) client = await hass_client() response = await client.get("/api/calendars") assert response.status == HTTPStatus.OK data = await response.json() assert data == snapshot async def test_entities( hass: HomeAssistant, snapshot: SnapshotAssertion, entity_registry: er.EntityRegistry, mock_mealie_client: AsyncMock, mock_config_entry: MockConfigEntry, ) -> None: """Test the API returns the calendar.""" await setup_integration(hass, mock_config_entry) await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id) async def test_api_events( hass: HomeAssistant, snapshot: SnapshotAssertion, mock_mealie_client: AsyncMock, mock_config_entry: MockConfigEntry, hass_client: ClientSessionGenerator, ) -> None: """Test the Mealie calendar view.""" await setup_integration(hass, mock_config_entry) client = await hass_client() response = await client.get( "/api/calendars/calendar.mealie_dinner?start=2023-08-01&end=2023-11-01" ) assert mock_mealie_client.get_mealplans.called == 1 assert mock_mealie_client.get_mealplans.call_args_list[1].args == ( date(2023, 8, 1), date(2023, 11, 1), ) assert response.status == HTTPStatus.OK events = await response.json() assert events == snapshot