Backfill materialization at setup and expose regenerate service (Feature 07, task 7)

This commit is contained in:
2026-09-17 15:20:18 -04:00
parent be6367b600
commit 0127362ebf
6 changed files with 267 additions and 13 deletions
+41
View File
@@ -0,0 +1,41 @@
"""Tests for the NestQuest services.yaml declaration file."""
from __future__ import annotations
import re
from pathlib import Path
SERVICES_PATH = (
Path(__file__).parent.parent
/ "custom_components"
/ "nestquest"
/ "services.yaml"
)
def test_services_yaml_exists() -> None:
assert SERVICES_PATH.exists(), f"services.yaml missing at {SERVICES_PATH}"
def test_services_yaml_declares_regenerate() -> None:
text = SERVICES_PATH.read_text(encoding="utf-8")
assert re.search(r"^regenerate:\s*$", text, re.MULTILINE), (
"services.yaml must declare the 'regenerate' service"
)
def test_services_yaml_regenerate_has_description_and_no_fields() -> None:
"""The regenerate service is documented with a clear description and no
required fields (there is no ``fields`` block under it)."""
text = SERVICES_PATH.read_text(encoding="utf-8")
match = re.search(r"^regenerate:\s*$", text, re.MULTILINE)
assert match is not None
section = text[match.end():]
next_service = re.search(r"^(?![#\s])\w+:\s*$", section, re.MULTILINE)
if next_service is not None:
section = section[: next_service.start()]
assert re.search(r"description:", section), (
"regenerate must carry a description"
)
assert "fields:" not in section, (
"regenerate declares no required fields"
)