Source code for enhomie.homie.childs.test.test_aspire
"""
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_HomieAspire(
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
aspires = childs.aspires
planets = bodies.planets
for planet in planets:
name = f'{planet}_active'
aspire = aspires[name]
attrs = lattrs(aspire)
assert attrs == [
'_HomieChild__homie',
'_HomieChild__name',
'_HomieChild__params',
'_HomieAspire__occurs',
'_HomieAspire__wheres',
'_HomieAspire__timer']
assert inrepr(
'aspire.HomieAspire',
aspire)
assert isinstance(
hash(aspire), int)
assert instr(
'aspire.HomieAspire',
aspire)
aspire.validate()
assert aspire.homie
assert aspire.name == name
assert aspire.family == 'builtins'
assert aspire.kind == 'aspire'
assert aspire.params
assert len(aspire.devices) == 1
assert len(aspire.groups) == 1
assert len(aspire.occurs) == 6
assert len(aspire.wheres) == 1
assert not aspire.paused
assert aspire.dumped
[docs]
def test_HomieAspire_cover(
tmp_path: Path,
respx_mock: MockRouter,
bodies: 'TestBodies',
) -> None:
"""
Perform various tests associated with relevant routines.
:param tmp_path: pytest object for temporal filesystem.
:param respx_mock: Object for mocking request operation.
:param bodies: Locations and groups for use in testing.
"""
samples = (
tmp_path / 'homie')
samples.mkdir()
save_text(
samples / 'test.yml',
"""
aspires:
pytest:
store:
- unique: aspire
value: true
expire: '1y'
""") # noqa: LIT003
homie = homie_factory(
config_factory(tmp_path),
respx_mock=respx_mock)
childs = homie.childs
origins = childs.origins
aspire = (
childs.aspires
['pytest'])
assert not aspire.devices
assert not aspire.groups
planets = bodies.planets
event = {'foo': 'bar'}
for planet in planets:
origin = origins[
f'{planet}_philips']
sitem = (
origin
.get_stream(event))
assert not (
aspire.when(sitem))