2017-02-03 07:43:03 +00:00
|
|
|
"""The test for the moon sensor platform."""
|
2022-02-22 13:59:59 +00:00
|
|
|
from __future__ import annotations
|
|
|
|
|
2021-01-01 21:31:56 +00:00
|
|
|
from unittest.mock import patch
|
2017-02-03 07:43:03 +00:00
|
|
|
|
2022-02-22 13:59:59 +00:00
|
|
|
import pytest
|
|
|
|
|
2020-06-29 16:39:24 +00:00
|
|
|
from homeassistant.components.homeassistant import (
|
|
|
|
DOMAIN as HA_DOMAIN,
|
|
|
|
SERVICE_UPDATE_ENTITY,
|
|
|
|
)
|
2022-02-22 13:59:59 +00:00
|
|
|
from homeassistant.components.moon.sensor import (
|
|
|
|
MOON_ICONS,
|
|
|
|
STATE_FIRST_QUARTER,
|
|
|
|
STATE_FULL_MOON,
|
|
|
|
STATE_LAST_QUARTER,
|
|
|
|
STATE_NEW_MOON,
|
|
|
|
STATE_WANING_CRESCENT,
|
|
|
|
STATE_WANING_GIBBOUS,
|
|
|
|
STATE_WAXING_CRESCENT,
|
|
|
|
STATE_WAXING_GIBBOUS,
|
|
|
|
)
|
2020-06-29 16:39:24 +00:00
|
|
|
from homeassistant.const import ATTR_ENTITY_ID
|
2022-02-22 13:59:59 +00:00
|
|
|
from homeassistant.core import HomeAssistant
|
2020-06-29 16:39:24 +00:00
|
|
|
from homeassistant.setup import async_setup_component
|
2017-02-03 07:43:03 +00:00
|
|
|
|
|
|
|
|
2022-02-22 13:59:59 +00:00
|
|
|
@pytest.mark.parametrize(
|
|
|
|
"moon_value,native_value,icon",
|
|
|
|
[
|
|
|
|
(0, STATE_NEW_MOON, MOON_ICONS[STATE_NEW_MOON]),
|
|
|
|
(5, STATE_WAXING_CRESCENT, MOON_ICONS[STATE_WAXING_CRESCENT]),
|
|
|
|
(7, STATE_FIRST_QUARTER, MOON_ICONS[STATE_FIRST_QUARTER]),
|
|
|
|
(12, STATE_WAXING_GIBBOUS, MOON_ICONS[STATE_WAXING_GIBBOUS]),
|
|
|
|
(14.3, STATE_FULL_MOON, MOON_ICONS[STATE_FULL_MOON]),
|
|
|
|
(20.1, STATE_WANING_GIBBOUS, MOON_ICONS[STATE_WANING_GIBBOUS]),
|
|
|
|
(20.8, STATE_LAST_QUARTER, MOON_ICONS[STATE_LAST_QUARTER]),
|
|
|
|
(23, STATE_WANING_CRESCENT, MOON_ICONS[STATE_WANING_CRESCENT]),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
async def test_moon_day(
|
|
|
|
hass: HomeAssistant, moon_value: float, native_value: str, icon: str
|
|
|
|
) -> None:
|
2020-06-29 16:39:24 +00:00
|
|
|
"""Test the Moon sensor."""
|
2022-02-22 13:59:59 +00:00
|
|
|
config = {"sensor": {"platform": "moon"}}
|
2020-06-29 16:39:24 +00:00
|
|
|
|
|
|
|
await async_setup_component(hass, HA_DOMAIN, {})
|
|
|
|
assert await async_setup_component(hass, "sensor", config)
|
|
|
|
await hass.async_block_till_done()
|
|
|
|
|
2022-02-22 13:59:59 +00:00
|
|
|
assert hass.states.get("sensor.moon")
|
2020-06-29 16:39:24 +00:00
|
|
|
|
|
|
|
with patch(
|
2022-02-22 13:59:59 +00:00
|
|
|
"homeassistant.components.moon.sensor.moon.phase", return_value=moon_value
|
2020-06-29 16:39:24 +00:00
|
|
|
):
|
2022-02-22 13:59:59 +00:00
|
|
|
await async_update_entity(hass, "sensor.moon")
|
2020-06-29 16:39:24 +00:00
|
|
|
|
2022-02-22 13:59:59 +00:00
|
|
|
state = hass.states.get("sensor.moon")
|
|
|
|
assert state.state == native_value
|
|
|
|
assert state.attributes["icon"] == icon
|
2017-02-03 07:43:03 +00:00
|
|
|
|
|
|
|
|
2022-02-22 13:59:59 +00:00
|
|
|
async def async_update_entity(hass: HomeAssistant, entity_id: str) -> None:
|
2020-06-29 16:39:24 +00:00
|
|
|
"""Run an update action for an entity."""
|
|
|
|
await hass.services.async_call(
|
2020-08-27 11:56:20 +00:00
|
|
|
HA_DOMAIN,
|
|
|
|
SERVICE_UPDATE_ENTITY,
|
|
|
|
{ATTR_ENTITY_ID: entity_id},
|
|
|
|
blocking=True,
|
2020-06-29 16:39:24 +00:00
|
|
|
)
|
|
|
|
await hass.async_block_till_done()
|