Source code for enhomie.philips.test.test_surgeon

"""
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 json import loads
from typing import TYPE_CHECKING

from encommon.types import DictStrAny
from encommon.utils import load_sample
from encommon.utils import prep_sample
from encommon.utils import read_text
from encommon.utils import rvrt_sample
from encommon.utils.sample import ENPYRWS

from . import SAMPLES
from ..origin import PhueOrigin
from ..surgeon import surgeon

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



[docs] def test_surgeon( homie: 'Homie', replaces: DictStrAny, bodies: 'TestBodies', ) -> None: """ Perform various tests associated with relevant routines. :param homie: Primary class instance for Homie Automate. :param replaces: Mapping of what to replace in samples. :param bodies: Locations and groups for use in testing. """ childs = homie.childs origins = childs.origins samples = SAMPLES / 'stream' planets = bodies.planets for planet in planets: origin = origins[ f'{planet}_philips'] assert isinstance( origin, PhueOrigin) assert origin.refresh() assert origin.fetch fetch = origin.fetch source = read_text( f'{samples}/dumped' f'/{planet}.json') source = rvrt_sample( sample=source, replace=replaces) sample = loads(source) for loaded in sample: event = loaded['event'] assert surgeon( fetch, event) sample_path = ( f'{SAMPLES}/surgeon' f'/{planet}.json') sample = load_sample( path=sample_path, update=ENPYRWS, content=fetch, replace=replaces) expect = prep_sample( content=fetch, replace=replaces) assert expect == sample