Thanks for making this code available. Very useful indeed.
I am new to python/appdaemon testing and was debugging a test case, but should the commented out assertions below not return true? If I comment the line out it passes okay.
from appdaemon_testing.pytest import automation_fixture
from appdaemon_testing.pytest import mock
from apps.automation import Automation
@automation_fixture(
Automation,
args={
},
)
def automation() -> Automation:
pass
...
def test_not_is_dusk(hass_driver, automation: Automation):
with hass_driver.setup():
hass_driver.set_state('sun.sun', 0, attribute_name='elevation')
# assert automation.get_state('sun.sun', attribute_name='elevation') == 0 # <<<<<<<<<<<<<<<<<<<<<<
assert not automation.is_dusk()
def test_is_dusk(hass_driver, automation: Automation):
with hass_driver.setup():
hass_driver.set_state('sun.sun', -4, attribute_name='elevation')
# assert automation.get_state('sun.sun', attribute_name='elevation') == -4 # <<<<<<<<<<<<<<<<<<<<<<
assert automation.is_dusk()
class Automation(hass.Hass):
...
def get_sun_elevation(self):
elev = self.get_state('sun.sun', attribute='elevation')
self.log(f' elev ({elev:2.2f})', level='DEBUG')
return elev
def is_dusk(self):
elev = self.get_sun_elevation()
dusk = elev < -3
t = 'is' if dusk else 'is not'
self.log(f' {t} dusk', level='DEBUG')
return dusk
...