mirror of
https://github.com/home-assistant/core.git
synced 2025-06-25 01:21:51 +02:00
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
![]() |
"""Unit tests for the VegeHub integration's sensor.py."""
|
||
|
|
||
|
from unittest.mock import patch
|
||
|
|
||
|
from syrupy.assertion import SnapshotAssertion
|
||
|
|
||
|
from homeassistant.const import Platform
|
||
|
from homeassistant.core import HomeAssistant
|
||
|
from homeassistant.helpers import entity_registry as er
|
||
|
|
||
|
from . import init_integration
|
||
|
from .conftest import TEST_SIMPLE_MAC, TEST_WEBHOOK_ID
|
||
|
|
||
|
from tests.common import MockConfigEntry, snapshot_platform
|
||
|
from tests.typing import ClientSessionGenerator
|
||
|
|
||
|
UPDATE_DATA = {
|
||
|
"api_key": "",
|
||
|
"mac": TEST_SIMPLE_MAC,
|
||
|
"error_code": 0,
|
||
|
"sensors": [
|
||
|
{"slot": 1, "samples": [{"v": 1.5, "t": "2025-01-15T16:51:23Z"}]},
|
||
|
{"slot": 2, "samples": [{"v": 1.45599997, "t": "2025-01-15T16:51:23Z"}]},
|
||
|
{"slot": 3, "samples": [{"v": 1.330000043, "t": "2025-01-15T16:51:23Z"}]},
|
||
|
{"slot": 4, "samples": [{"v": 0.075999998, "t": "2025-01-15T16:51:23Z"}]},
|
||
|
{"slot": 5, "samples": [{"v": 9.314800262, "t": "2025-01-15T16:51:23Z"}]},
|
||
|
],
|
||
|
"send_time": 1736959883,
|
||
|
"wifi_str": -27,
|
||
|
}
|
||
|
|
||
|
|
||
|
async def test_sensor_entities(
|
||
|
hass: HomeAssistant,
|
||
|
snapshot: SnapshotAssertion,
|
||
|
hass_client_no_auth: ClientSessionGenerator,
|
||
|
entity_registry: er.EntityRegistry,
|
||
|
mocked_config_entry: MockConfigEntry,
|
||
|
) -> None:
|
||
|
"""Test all entities."""
|
||
|
|
||
|
with patch("homeassistant.components.vegehub.PLATFORMS", [Platform.SENSOR]):
|
||
|
await init_integration(hass, mocked_config_entry)
|
||
|
|
||
|
assert TEST_WEBHOOK_ID in hass.data["webhook"], "Webhook was not registered"
|
||
|
|
||
|
# Verify the webhook handler
|
||
|
webhook_info = hass.data["webhook"][TEST_WEBHOOK_ID]
|
||
|
assert webhook_info["handler"], "Webhook handler is not set"
|
||
|
|
||
|
client = await hass_client_no_auth()
|
||
|
resp = await client.post(f"/api/webhook/{TEST_WEBHOOK_ID}", json=UPDATE_DATA)
|
||
|
|
||
|
# Send the same update again so that the coordinator modifies existing data
|
||
|
# instead of creating new data.
|
||
|
resp = await client.post(f"/api/webhook/{TEST_WEBHOOK_ID}", json=UPDATE_DATA)
|
||
|
|
||
|
# Wait for remaining tasks to complete.
|
||
|
await hass.async_block_till_done()
|
||
|
assert resp.status == 200, f"Unexpected status code: {resp.status}"
|
||
|
await snapshot_platform(
|
||
|
hass, entity_registry, snapshot, mocked_config_entry.entry_id
|
||
|
)
|