Source code for enhomie.homie.childs.test.test_group

"""
Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution
is permitted, for more information consult the project license file.
"""



from pathlib import Path
from typing import TYPE_CHECKING

from encommon.types import inrepr
from encommon.types import instr
from encommon.types import lattrs
from encommon.utils import save_text

from respx import MockRouter

from ....conftest import config_factory
from ....conftest import homie_factory

if TYPE_CHECKING:
    from ...homie import Homie
    from ....utils import TestBodies



[docs] def test_HomieGroup( homie: 'Homie', bodies: 'TestBodies', ) -> None: """ Perform various tests associated with relevant routines. :param homie: Primary class instance for Homie Automate. :param bodies: Locations and groups for use in testing. """ childs = homie.childs origins = childs.origins groups = childs.groups moons = ( dict(bodies.moons) .items()) for planet, moon in moons: origin = origins[ f'{planet}_philips'] group = groups[moon] attrs = lattrs(group) assert attrs == [ '_HomieChild__homie', '_HomieChild__name', '_HomieChild__params'] assert inrepr( 'group.HomieGroup', group) assert isinstance( hash(group), int) assert instr( 'group.HomieGroup', group) group.validate() assert group.homie assert group.name == moon assert group.family == 'builtins' assert group.kind == 'group' assert group.origin assert group.params assert not group.source assert group.dumped assert origin.refresh() assert group.source
[docs] def test_HomieGroup_cover( tmp_path: Path, respx_mock: MockRouter, ) -> None: """ Perform various tests associated with relevant routines. :param tmp_path: pytest object for temporal filesystem. :param respx_mock: Object for mocking request operation. """ samples = ( tmp_path / 'homie') samples.mkdir() save_text( samples / 'test.yml', """ groups: pytest: devices: - jupiter_special """) # noqa: LIT003 homie = homie_factory( config_factory(tmp_path), respx_mock=respx_mock) childs = homie.childs group = ( childs.groups ['pytest']) assert not group.source