core/tests/components/cookidoo/conftest.py

79 lines
2.3 KiB
Python

"""Common fixtures for the Cookidoo tests."""
from collections.abc import Generator
from typing import cast
from unittest.mock import AsyncMock, patch
from cookidoo_api import (
CookidooAdditionalItem,
CookidooAuthResponse,
CookidooIngredientItem,
)
import pytest
from homeassistant.components.cookidoo.const import DOMAIN
from homeassistant.const import CONF_COUNTRY, CONF_EMAIL, CONF_LANGUAGE, CONF_PASSWORD
from tests.common import MockConfigEntry, load_json_object_fixture
EMAIL = "test-email"
PASSWORD = "test-password"
COUNTRY = "CH"
LANGUAGE = "de-CH"
TEST_UUID = "sub_uuid"
@pytest.fixture
def mock_setup_entry() -> Generator[AsyncMock]:
"""Override async_setup_entry."""
with patch(
"homeassistant.components.cookidoo.async_setup_entry", return_value=True
) as mock_setup_entry:
yield mock_setup_entry
@pytest.fixture
def mock_cookidoo_client() -> Generator[AsyncMock]:
"""Mock a Cookidoo client."""
with patch(
"homeassistant.components.cookidoo.helpers.Cookidoo",
autospec=True,
) as mock_client:
client = mock_client.return_value
client.login.return_value = cast(CookidooAuthResponse, {"name": "Cookidoo"})
client.get_ingredient_items.return_value = [
CookidooIngredientItem(**item)
for item in load_json_object_fixture("ingredient_items.json", DOMAIN)[
"data"
]
]
client.get_additional_items.return_value = [
CookidooAdditionalItem(**item)
for item in load_json_object_fixture("additional_items.json", DOMAIN)[
"data"
]
]
client.login.return_value = CookidooAuthResponse(
**load_json_object_fixture("login.json", DOMAIN)
)
yield client
@pytest.fixture(name="cookidoo_config_entry")
def mock_cookidoo_config_entry() -> MockConfigEntry:
"""Mock cookidoo configuration entry."""
return MockConfigEntry(
domain=DOMAIN,
version=1,
minor_version=2,
data={
CONF_EMAIL: EMAIL,
CONF_PASSWORD: PASSWORD,
CONF_COUNTRY: COUNTRY,
CONF_LANGUAGE: LANGUAGE,
},
entry_id="01JBVVVJ87F6G5V0QJX6HBC94T",
unique_id=TEST_UUID,
)