Example #1
0
    def test_digital_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = DigitalSensorReading()
        service.create(reading)

        assert service.get(reading.id).id == reading.id
Example #2
0
    def test_analog_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        assert service.get(reading.id).id == reading.id
Example #3
0
    def test_index_timestamp_reverse_order(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        old = DigitalSensorReading()
        old.name = 'testsensor'
        old.value = True
        old.timestamp = datetime.now()

        new = DigitalSensorReading()
        new.name = 'testsensor'
        new.value = True
        new.timestamp = datetime.now()

        service.create(old)
        service.create(new)

        client = web.app.test_client()

        rv = client.get('/')

        rv_str = rv.data.decode('utf-8')

        matches = re.findall('\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d\d\d\d',
                             rv_str)

        assert matches[0] == str(new.timestamp)
        assert matches[1] == str(old.timestamp)
Example #4
0
    def test_analog_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        assert service.get(reading.id).id == reading.id
Example #5
0
    def test_index_timestamp_reverse_order(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        old = DigitalSensorReading()
        old.name = "testsensor"
        old.value = True
        old.timestamp = datetime.now()

        new = DigitalSensorReading()
        new.name = "testsensor"
        new.value = True
        new.timestamp = datetime.now()

        service.create(old)
        service.create(new)

        client = web.app.test_client()

        rv = client.get("/")

        rv_str = rv.data.decode("utf-8")

        matches = re.findall("\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d\d\d\d\d\d", rv_str)

        assert matches[0] == str(new.timestamp)
        assert matches[1] == str(old.timestamp)
Example #6
0
    def test_get_newest_notification_returns_newest_record(self, sqlalchemy):
        sensor_service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        reading.name = 'Test Sensor'
        sensor_service.create(reading)

        old_notification = NotificationEvent()
        old_notification.sensor_id = reading.id
        old_notification.timestamp = datetime(2015, 1, 1)

        new_notification = NotificationEvent()
        new_notification.sensor_id = reading.id
        new_notification.timestamp = datetime(2016, 1, 1)

        service = NotificationPersistenceService()

        # Insert in reverse order to confirm order by
        service.create(new_notification)
        service.create(old_notification)

        newest_timestamp = new_notification.timestamp
        db_timestamp = service.get_newest_notification(reading.name).timestamp

        assert db_timestamp == newest_timestamp
Example #7
0
    def test_get_newest_notification_returns_newest_record(self, sqlalchemy):
        sensor_service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        reading.name = 'Test Sensor'
        sensor_service.create(reading)

        old_notification = NotificationEvent()
        old_notification.sensor_id = reading.id
        old_notification.timestamp = datetime(2015, 1, 1)

        new_notification = NotificationEvent()
        new_notification.sensor_id = reading.id
        new_notification.timestamp = datetime(2016, 1, 1)

        service = NotificationPersistenceService()

        # Insert in reverse order to confirm order by
        service.create(new_notification)
        service.create(old_notification)

        newest_timestamp = new_notification.timestamp
        db_timestamp = service.get_newest_notification(reading.name).timestamp

        assert db_timestamp == newest_timestamp
Example #8
0
    def test_digital_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = DigitalSensorReading()
        service.create(reading)

        assert service.get(reading.id).id == reading.id
Example #9
0
    def test_rollback(self, sqlalchemy):
        try:
            with transaction_scope() as session:
                reading = SensorReading()
                session.add(reading)

                raise ValueError('Test Transactions!')
        except ValueError:
            pass

        service = SensorReadingPersistenceService()
        assert len(service.all()) == 0
Example #10
0
    def test_rollback(self, sqlalchemy):
        try:
            with transaction_scope() as session:
                reading = SensorReading()
                session.add(reading)

                raise ValueError('Test Transactions!')
        except ValueError:
            pass

        service = SensorReadingPersistenceService()
        assert len(service.all()) == 0
Example #11
0
    def test_sensor_reading_job_digital_normal(self, sensormodule, sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockDigitalNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'digital normal'
        assert sensor.value is False

        assert not sensormodule.sms_notification.send_notification.called
Example #12
0
    def test_sensor_reading_job_digital_normal(self, sensormodule,
                                               sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockDigitalNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'digital normal'
        assert sensor.value is False

        assert not sensormodule.sms_notification.send_notification.called
Example #13
0
    def test_sensor_reading_job_analog_normal(self, sensormodule, sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockAnalogNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'analog normal'
        assert sensor.value == 1
        assert sensor.unit == 'normal analog unit'

        assert not sensormodule.sms_notification.send_notification.called
Example #14
0
    def test_sensor_reading_job_analog_normal(self, sensormodule, sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockAnalogNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'analog normal'
        assert sensor.value == 1
        assert sensor.unit == 'normal analog unit'

        assert not sensormodule.sms_notification.send_notification.called
Example #15
0
    def test_sensor_reading_job_analog_above_normal(self, sensormodule,
                                                    sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockAnalogAboveNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'analog above normal'
        assert sensor.value == 2
        assert sensor.unit == 'above normal analog unit'

        sensormodule.sms_notification.send_notification.assert_called_with(
            'analog above normal notification')
Example #16
0
    def test_sensor_reading_job_analog_above_normal(self, sensormodule,
                                                    sqlalchemy):
        tests.fixtures.mock_sensors = [mocks.MockAnalogAboveNormalSensor]

        sensormodule.sensor_reading_job()

        sensor_persistence = SensorReadingPersistenceService()
        sensor = sensor_persistence.all()[0]

        assert sensor.name == 'analog above normal'
        assert sensor.value == 2
        assert sensor.unit == 'above normal analog unit'

        sensormodule.sms_notification.send_notification.assert_called_with(
                'analog above normal notification')
Example #17
0
    def test_polymorphic(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = SensorReading()
        analog = AnalogSensorReading()
        digital = DigitalSensorReading()

        service.create(reading)
        service.create(analog)
        service.create(digital)

        assert len(service.all()) == 3
Example #18
0
    def test_all_reversed_bad_paging(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        older = AnalogSensorReading()
        older.timestamp = datetime.now()

        newer = DigitalSensorReading()
        newer.timestamp = datetime.now()

        service.create(older)
        service.create(newer)

        paged = service.all_reversed(1000, 1)
        assert paged.elements == []

        paged = service.all_reversed(-1, 1)
        assert paged.elements == []
Example #19
0
    def test_delete_deletes_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)
        service.delete(reading)

        assert len(service.all()) == 0
Example #20
0
    def test_polymorphic(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = SensorReading()
        analog = AnalogSensorReading()
        digital = DigitalSensorReading()

        service.create(reading)
        service.create(analog)
        service.create(digital)

        assert len(service.all()) == 3
Example #21
0
    def test_index_digital_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        timestamp = datetime.now()

        reading = DigitalSensorReading()
        reading.name = "testsensor"
        reading.value = True
        reading.timestamp = timestamp

        service.create(reading)

        client = web.app.test_client()

        rv = client.get("/")

        assert b"testsensor" in rv.data
        assert b"Digital" in rv.data
        assert b"True" in rv.data
        assert str.encode(str(timestamp)) in rv.data
Example #22
0
    def test_index_digital_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        timestamp = datetime.now()

        reading = DigitalSensorReading()
        reading.name = 'testsensor'
        reading.value = True
        reading.timestamp = timestamp

        service.create(reading)

        client = web.app.test_client()

        rv = client.get('/')

        assert b'testsensor' in rv.data
        assert b'Digital' in rv.data
        assert b'True' in rv.data
        assert str.encode(str(timestamp)) in rv.data
Example #23
0
    def test_all_returns_all_model_objects(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        reading2 = AnalogSensorReading()
        service.create(reading2)

        assert len(service.all()) == 2
Example #24
0
    def test_get_returns_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        reading2 = AnalogSensorReading()
        service.create(reading2)

        assert service.get(reading.id).id == reading.id
Example #25
0
    def test_all_reversed(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        older = AnalogSensorReading()
        older.timestamp = datetime.now()

        newer = DigitalSensorReading()
        newer.timestamp = datetime.now()

        service.create(older)
        service.create(newer)

        paged = service.all_reversed(0, 100)
        assert paged.page_number == 0
        assert paged.page_size == 100
        assert paged.total_pages == 1

        readings = paged.elements
        assert readings[0].timestamp == newer.timestamp
        assert readings[1].timestamp == older.timestamp

        assert len(readings) == 2
Example #26
0
    def test_all_reversed(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        older = AnalogSensorReading()
        older.timestamp = datetime.now()

        newer = DigitalSensorReading()
        newer.timestamp = datetime.now()

        service.create(older)
        service.create(newer)

        paged = service.all_reversed(0, 100)
        assert paged.page_number == 0
        assert paged.page_size == 100
        assert paged.total_pages == 1

        readings = paged.elements
        assert readings[0].timestamp == newer.timestamp
        assert readings[1].timestamp == older.timestamp

        assert len(readings) == 2
Example #27
0
    def test_delete_deletes_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)
        service.delete(reading)

        assert len(service.all()) == 0
Example #28
0
    def test_index_analog_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        timestamp = datetime.now()

        reading = AnalogSensorReading()
        reading.name = 'testsensor'
        reading.unit = 'testunit'
        reading.value = 0
        reading.timestamp = timestamp

        service.create(reading)

        client = web.app.test_client()

        rv = client.get('/')

        assert b'testsensor' in rv.data
        assert b'Analog' in rv.data
        assert b'0 (testunit)' in rv.data
        assert str.encode(str(timestamp)) in rv.data
        assert b'newer' not in rv.data
        assert b'older' not in rv.data
Example #29
0
    def test_index_analog_sensor_reading(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        timestamp = datetime.now()

        reading = AnalogSensorReading()
        reading.name = "testsensor"
        reading.unit = "testunit"
        reading.value = 0
        reading.timestamp = timestamp

        service.create(reading)

        client = web.app.test_client()

        rv = client.get("/")

        assert b"testsensor" in rv.data
        assert b"Analog" in rv.data
        assert b"0 (testunit)" in rv.data
        assert str.encode(str(timestamp)) in rv.data
        assert b"newer" not in rv.data
        assert b"older" not in rv.data
Example #30
0
    def test_get_newest_notification_excludes_other_sensors(self, sqlalchemy):
        reading_service = SensorReadingPersistenceService()
        notification_service = NotificationPersistenceService()

        included_sensor = DigitalSensorReading()
        included_sensor.name = 'included'
        reading_service.create(included_sensor)

        excluded_sensor = DigitalSensorReading()
        excluded_sensor.name = 'excluded'
        reading_service.create(excluded_sensor)

        excluded_notification = NotificationEvent()
        excluded_notification.sensor_id = excluded_sensor.id
        excluded_notification.timestamp = datetime(2016, 1, 1)
        notification_service.create(excluded_notification)

        included_notification = NotificationEvent()
        included_notification.sensor_id = included_sensor.id
        included_notification.timestamp = datetime(2015, 1, 1)
        notification_service.create(included_notification)

        assert notification_service.get_newest_notification('included') \
            .timestamp == included_notification.timestamp
Example #31
0
    def test_all_returns_all_model_objects(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        reading2 = AnalogSensorReading()
        service.create(reading2)

        assert len(service.all()) == 2
Example #32
0
    def test_get_returns_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        reading = AnalogSensorReading()
        service.create(reading)

        reading2 = AnalogSensorReading()
        service.create(reading2)

        assert service.get(reading.id).id == reading.id
Example #33
0
    def test_update_updates_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        original_reading = AnalogSensorReading()
        original_reading.name = 'original'
        original_reading.value = 1
        original_reading.unit = 'original'

        service.create(original_reading)

        persisted_reading = service.get(original_reading.id)

        persisted_reading.name = 'new'
        persisted_reading.value = 2
        persisted_reading.unit = 'new'

        service.update(persisted_reading)

        updated_reading = service.get(original_reading.id)

        assert updated_reading.name == 'new'
        assert updated_reading.value == 2
        assert updated_reading.unit == 'new'
Example #34
0
    def test_all_reversed_bad_paging(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        older = AnalogSensorReading()
        older.timestamp = datetime.now()

        newer = DigitalSensorReading()
        newer.timestamp = datetime.now()

        service.create(older)
        service.create(newer)

        paged = service.all_reversed(1000, 1)
        assert paged.elements == []

        paged = service.all_reversed(-1, 1)
        assert paged.elements == []
Example #35
0
    def test_update_updates_single_model_object(self, sqlalchemy):
        service = SensorReadingPersistenceService()

        original_reading = AnalogSensorReading()
        original_reading.name = 'original'
        original_reading.value = 1
        original_reading.unit = 'original'

        service.create(original_reading)

        persisted_reading = service.get(original_reading.id)

        persisted_reading.name = 'new'
        persisted_reading.value = 2
        persisted_reading.unit = 'new'

        service.update(persisted_reading)

        updated_reading = service.get(original_reading.id)

        assert updated_reading.name == 'new'
        assert updated_reading.value == 2
        assert updated_reading.unit == 'new'
Example #36
0
    def test_get_newest_notification_excludes_other_sensors(self, sqlalchemy):
        reading_service = SensorReadingPersistenceService()
        notification_service = NotificationPersistenceService()

        included_sensor = DigitalSensorReading()
        included_sensor.name = 'included'
        reading_service.create(included_sensor)

        excluded_sensor = DigitalSensorReading()
        excluded_sensor.name = 'excluded'
        reading_service.create(excluded_sensor)

        excluded_notification = NotificationEvent()
        excluded_notification.sensor_id = excluded_sensor.id
        excluded_notification.timestamp = datetime(2016, 1, 1)
        notification_service.create(excluded_notification)

        included_notification = NotificationEvent()
        included_notification.sensor_id = included_sensor.id
        included_notification.timestamp = datetime(2015, 1, 1)
        notification_service.create(included_notification)

        assert notification_service.get_newest_notification('included') \
            .timestamp == included_notification.timestamp