core/tests/components/ourgroceries/conftest.py

69 lines
2.0 KiB
Python
Raw Normal View History

"""Common fixtures for the OurGroceries tests."""
from collections.abc import Generator
from unittest.mock import AsyncMock, patch
import pytest
from homeassistant.components.ourgroceries import DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from . import items_to_shopping_list
from tests.common import MockConfigEntry
USERNAME = "test-username"
PASSWORD = "test-password"
@pytest.fixture
def mock_setup_entry() -> Generator[AsyncMock, None, None]:
"""Override async_setup_entry."""
with patch(
"homeassistant.components.ourgroceries.async_setup_entry", return_value=True
) as mock_setup_entry:
yield mock_setup_entry
@pytest.fixture(name="ourgroceries_config_entry")
def mock_ourgroceries_config_entry() -> MockConfigEntry:
"""Mock ourgroceries configuration."""
return MockConfigEntry(
domain=DOMAIN, data={CONF_USERNAME: USERNAME, CONF_PASSWORD: PASSWORD}
)
@pytest.fixture(name="items")
def mock_items() -> dict:
"""Mock a collection of shopping list items."""
return []
@pytest.fixture(name="ourgroceries")
def mock_ourgroceries(items: list[dict]) -> AsyncMock:
"""Mock the OurGroceries api."""
og = AsyncMock()
og.login.return_value = True
og.get_my_lists.return_value = {
"shoppingLists": [{"id": "test_list", "name": "Test List", "versionId": "1"}]
}
og.get_list_items.return_value = items_to_shopping_list(items)
return og
@pytest.fixture(name="setup_integration")
async def mock_setup_integration(
hass: HomeAssistant,
ourgroceries: AsyncMock,
ourgroceries_config_entry: MockConfigEntry,
) -> None:
"""Mock setup of the ourgroceries integration."""
ourgroceries_config_entry.add_to_hass(hass)
with patch(
"homeassistant.components.ourgroceries.OurGroceries", return_value=ourgroceries
):
assert await async_setup_component(hass, DOMAIN, {})
await hass.async_block_till_done()
yield