mirror of https://github.com/home-assistant/core
91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
"""Tests for the OctoPrint integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
from unittest.mock import patch
|
|
|
|
from pyoctoprintapi import (
|
|
DiscoverySettings,
|
|
OctoprintJobInfo,
|
|
OctoprintPrinterInfo,
|
|
TrackingSetting,
|
|
)
|
|
|
|
from homeassistant.components.octoprint import DOMAIN
|
|
from homeassistant.config_entries import ConfigEntryState
|
|
from homeassistant.const import Platform
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.typing import UNDEFINED, UndefinedType
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
DEFAULT_JOB = {
|
|
"job": {},
|
|
"progress": {"completion": 50},
|
|
}
|
|
|
|
DEFAULT_PRINTER = {
|
|
"state": {
|
|
"flags": {"printing": True, "error": False},
|
|
"text": "Operational",
|
|
},
|
|
"temperature": [],
|
|
}
|
|
|
|
|
|
async def init_integration(
|
|
hass: HomeAssistant,
|
|
platform: Platform,
|
|
printer: dict[str, Any] | UndefinedType | None = UNDEFINED,
|
|
job: dict[str, Any] | None = None,
|
|
) -> None:
|
|
"""Set up the octoprint integration in Home Assistant."""
|
|
printer_info: OctoprintPrinterInfo | None = None
|
|
if printer is UNDEFINED:
|
|
printer = DEFAULT_PRINTER
|
|
if printer is not None:
|
|
printer_info = OctoprintPrinterInfo(printer)
|
|
if job is None:
|
|
job = DEFAULT_JOB
|
|
with (
|
|
patch("homeassistant.components.octoprint.PLATFORMS", [platform]),
|
|
patch("pyoctoprintapi.OctoprintClient.get_server_info", return_value={}),
|
|
patch(
|
|
"pyoctoprintapi.OctoprintClient.get_printer_info",
|
|
return_value=printer_info,
|
|
),
|
|
patch(
|
|
"pyoctoprintapi.OctoprintClient.get_job_info",
|
|
return_value=OctoprintJobInfo(job),
|
|
),
|
|
patch(
|
|
"pyoctoprintapi.OctoprintClient.get_tracking_info",
|
|
return_value=TrackingSetting({"unique_id": "uuid"}),
|
|
),
|
|
patch(
|
|
"pyoctoprintapi.OctoprintClient.get_discovery_info",
|
|
return_value=DiscoverySettings({"upnpUuid": "uuid"}),
|
|
),
|
|
):
|
|
config_entry = MockConfigEntry(
|
|
domain=DOMAIN,
|
|
entry_id="uuid",
|
|
unique_id="uuid",
|
|
data={
|
|
"host": "1.1.1.1",
|
|
"api_key": "test-key",
|
|
"name": "OctoPrint",
|
|
"port": 81,
|
|
"ssl": True,
|
|
"path": "/",
|
|
},
|
|
title="OctoPrint",
|
|
)
|
|
config_entry.add_to_hass(hass)
|
|
|
|
await hass.config_entries.async_setup(config_entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
|
|
assert config_entry.state is ConfigEntryState.LOADED
|