def test_not_expired(self): # set up with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=25, time=datetime.now() - timedelta(seconds=30))) # test with self.mysql.dao.SessionContext(): result = self.sensor.should_update() self.assertFalse(result)
def test_outdated(self): # set up with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=25, time=datetime(2000, 1, 1))) # test with self.mysql.dao.SessionContext(): available = self.sensor.available() self.assertFalse(available)
def test_expired(self): # set up with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=json.dumps(25), time=datetime(2000, 1, 1))) # test with self.mysql.dao.SessionContext(): self.assertEqual(datetime(2000, 1, 1), self.sensor.time()) with self.assertRaises(ExpiredError): self.sensor.value()
def test_success(self): # set up self.useFixture( DateTimeFixture('atlantis.core.sensor.datetime', datetime(2000, 1, 1, 0, 0, 0))) with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=json.dumps(25), time=datetime(2000, 1, 1))) # test with self.mysql.dao.SessionContext(): self.assertEqual(25, self.sensor.value()) self.assertEqual(datetime(2000, 1, 1), self.sensor.time())
def test(self): # set up class Sensor(DeviceComponent): model_type = SensorModel class ThermometerDevice(AbstractDevice): @Sensor def room(self): pass with self.mysql.dao.create_session() as session: session.add(SensorModel(name='thermometer.room')) # test with self.mysql.dao.SessionContext(): model = ThermometerDevice().room._get_model() self.assertEqual('thermometer.room', model.name)
def test_no_interval(self): # set up class ThermometerDevice(AbstractDevice): @Sensor(interval=None) def room(self): return 25 with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=25, time=datetime.now() - timedelta(seconds=3600))) # test with self.mysql.dao.SessionContext(): result = ThermometerDevice().room.should_update() self.assertFalse(result)
def test_no_interval(self): # set up class ThermometerDevice(AbstractDevice): @Sensor(interval=None) def room(self): return 25 self.sensor.interval = None with self.mysql.dao.create_session() as session: session.add( SensorModel(name='thermometer.room', value=25, time=datetime(2000, 1, 1))) # test with self.mysql.dao.SessionContext(): available = ThermometerDevice().room.available() self.assertTrue(available)
def test(self): # set up class ThermometerDevice(AbstractDevice): @Sensor def room(self): return 25 with self.mysql.dao.create_session() as session: sensor = SensorModel(name='thermometer.room', error_rate=0.01, value=json.dumps(25), time=datetime(2000, 1, 1)) session.add(sensor) # test with self.mysql.dao.SessionContext(): results = sensors.all() self.assertEqual(1, len(results)) self.assertEqual(0.01, results[0]['error_rate']) self.assertEqual(60, results[0]['interval']) self.assertEqual(datetime(2000, 1, 1), results[0]['time']) self.assertEqual(25, results[0]['value'])