def test_extract_workingdays(self):
     triggers = [{'SUNRISE': {'at': ['WORKINGDAY']}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(Open.type(), result[0].task().type())
     self.assertEqual(5, len(result[0]._on))
     for day in result[0]._on:
         self.assertTrue(day in ['MO', 'TU', 'WE', 'TH', 'FR'], 'Day {} not in list {}'.format(day, result[0]._on))
 def test_extract_sunout(self):
     triggers = ['SUNOUT', {'SUNOUT': {'task': 'TILT'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(2, len(result))
     self.assertEqual(Open.type(), result[0].task().type())
     self.assertEqual(Tilt.type(), result[1].task().type())
     for item in result:
         self.assertEqual(SunOutTrigger.type(), item.type())
         self.assertEqual('2020-07-27T07:59:00+02:00', item.time().isoformat())
 def test_extract_sunin(self):
     triggers = ['SUNIN', {'SUNIN': {'task': 'CLOSE'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(2, len(result))
     self.assertEqual(Tilt.type(), result[0].task().type())
     self.assertEqual(Close.type(), result[1].task().type())
     for item in result:
         self.assertEqual(SunInTrigger.type(), item.type())
         self.assertEqual('2020-07-27T07:59:00+02:00', item.time().isoformat())
 def test_applies_not(self):
     triggers = [{'SUNRISE': {'at': ['TU']}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(Open.type(), result[0].task().type())
     for item in result:
         self.assertEqual(SunriseTrigger.type(), item.type())
         self.assertEqual('2020-07-27T05:59:00+02:00', item.time().isoformat())
         self.assertFalse(item.applies())
 def test_extract_time(self):
     dateutil.date.next()
     triggers = [{'TIME': {'task': 'CLOSE', 'time': '16:00:00'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(Close.type(), result[0].task().type())
     for item in result:
         self.assertEqual(TimeTrigger.type(), item.type())
         now = datetime.now(dateutil.zone)
         self.assertEqual(now.date().isoformat() + 'T16:00:00+02:00', item.time().isoformat())
 def test_order(self):
     triggers = [{'TIME': {'time': '23:59:59'}}, {'TIME': {'time': '00:00:01'}}, 'SUNRISE', 'SUNOUT', 'SUNSET', 'SUNIN']
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(5, len(result))
     self.assertEqual(TimeTrigger.type(), result[3].type())
     now = datetime.now(dateutil.zone)
     self.assertEqual(now.date().isoformat() + 'T00:00:01+02:00', result[3].time().isoformat())
     self.assertEqual(SunriseTrigger.type(), result[0].type())
     self.assertEqual(SunInTrigger.type(), result[2].type())
     self.assertEqual(SunOutTrigger.type(), result[1].type())
     self.assertEqual(TimeTrigger.type(), result[4].type())
     self.assertEqual(now.date().isoformat() + 'T23:59:59+02:00', result[4].time().isoformat())
Esempio n. 7
0
 def test_parallel_tasks_triggers_extract(self):
     blinds = [
         Blind('A', 0, 0, TestDevice('A'), ['SUNRISE'], []),
         Blind('B', 0, 0, TestDevice('B'), ['SUNRISE'], [])
     ]
     api = SunAPIMock()
     api.fetch_sundata(None)
     for blind in blinds:
         triggers = trigger.extract_triggers(blind, api.sundata)
         print(triggers)
         manager.add(Job(triggers[0], blind))
     print(manager)
     manager.prepare()
     print(manager)
     manager.run()
     self.assertEqual(1, blinds[1].device.counter,
                      '{} was called'.format(blinds[1].name))
     self.assertEqual(1, blinds[0].device.counter,
                      '{} was called'.format(blinds[0].name))
 def test_elevation_rise(self):
     triggers = [{'ELEVATION': {'elevation': 19, 'direction': 'RISE'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(ElevationTrigger.type(), result[0].type())
     self.assertEqual('2020-07-27T07:59:00+02:00', result[0].time().isoformat())
 def test_azimuth(self):
     triggers = [{'AZIMUTH': {'azimuth': 123}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(AzimuthTrigger.type(), result[0].type())
     self.assertEqual('2020-07-27T17:08:00+02:00', result[0].time().isoformat())
 def test_offset_minus(self):
     triggers = [{'SUNOUT': {'offset': -8}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(SunOutTrigger.type(), result[0].type())
     self.assertEqual('2020-07-27T07:51:00+02:00', result[0].time().isoformat())
 def test_no_match(self):
     triggers = ['YOLO', {'YOLO': {'task': 'OPEN'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(0, len(result))
 def test_position(self):
     triggers = [{'POSITION': {'azimuth': 123, 'elevation': 19, 'direction': 'RISE'}}]
     result = trigger.extract_triggers(blind(triggers), sundata())
     self.assertEqual(1, len(result))
     self.assertEqual(PositionTrigger.type(), result[0].type())
     self.assertEqual('2020-07-27T17:08:00+02:00', result[0].time().isoformat())