41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""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"
|
|
) |