def setUp(self):
     """ Called once, before any tests """
     conn = sqlite3.connect("test_pres_reading.sqlite")
     c = conn.cursor()
     c.execute('''
               CREATE TABLE pressure_reading
               (id INTEGER PRIMARY KEY ASC,
                timestamp DATETIME NOT NULL,
                model VARCHAR(250) NOT NULL,
                min_reading NUMBER NOT NULL,
                avg_reading NUMBER NOT NULL,
                max_reading NUMBER NOT NULL,
                status VARCHAR(250) NOT NULL
               )
               ''')
     conn.commit()
     conn.close()
     self.test_pres_manager = PressureReadingManager(
         TestPressureReadingManager.DATABASE_NAME)
     test_pres_reading = PressureReading(
         datetime.datetime.strptime(
             TestPressureReadingManager.TEST_TIMESTAMP,
             TestPressureReadingManager.DATE_FORMAT),
         TestPressureReadingManager.TEST_MODEL,
         TestPressureReadingManager.TEST_MIN_VALUE,
         TestPressureReadingManager.TEST_AVG_VALUE,
         TestPressureReadingManager.TEST_MAX_VALUE,
         TestPressureReadingManager.TEST_STATUS)
     self.test_pres_manager.add_reading(test_pres_reading)
     self.logPoint()
예제 #2
0
def add_reading(sensor_type):
    """creates reading object and add to csv"""
    reading = request.get_json()
    print(reading)
    print(json_to_list(reading))
    sensor_input = json_to_list(reading)

    datetime_object = datetime.strptime(sensor_input[0],
                                        "%Y-%m-%d %H:%M:%S.%f")
    sensor_input[0] = datetime_object

    if sensor_type == "temperature":
        sensor = TemperatureReadingManager("data/temperature_results.csv")
        temp_read = TemperatureReading(*sensor_input)
        print(temp_read.get_timestamp())
        sensor.add_reading(temp_read)
    elif sensor_type == "pressure":
        sensor = PressureReadingManager("data/pressure_results2.csv")
        temp_read = PressureReading(*sensor_input)
        print(temp_read.get_timestamp())
        sensor.add_reading(temp_read)

    response = app.response_class(response=reading,
                                  status=200,
                                  mimetype='text/plain')

    return response
    def setUp(self, test_readings=TEST_PRES_READINGS):
        """ Creates fixtures before each test """

        self.logPoint()
        # This mocks the csv reader to return our test readings
        csv.reader = MagicMock(return_value=test_readings)
        self.reading_manager = PressureReadingManager("pres_testresults.csv")

        reading_datetime = datetime.datetime.strptime("2018-09-23 19:56",
                                                      "%Y-%m-%d %H:%M")
        self.reading = PressureReading(reading_datetime, 1,
                                       "ABC Sensor Pres M100", 50.163, 51.435,
                                       52.103, "GOOD")
        self.reading_update = PressureReading(reading_datetime, 1,
                                              "ABC Sensor Pres M100", 50.163,
                                              51.435, 52.103, "UPDATED")
 def test_update_reading_valid(self):
     """ 030A - Valid Update Reading """
     new_reading = PressureReading(
         datetime.datetime.strptime("2018-09-23 19:59", "%Y-%m-%d %H:%M"),
         "ABC Sensor New Pres M100", float(50.513), float(51.745),
         float(53.105), "GOOD")
     updated_reading = self.test_pres_manager.update_reading(1, new_reading)
     self.assertTrue(updated_reading)
    def test_update_reading_not_in_list_fail(self):
        """ 030C - Doesn't update reading if not in the list """

        reading_datetime = datetime.datetime.strptime("2018-09-23 19:56",
                                                      "%Y-%m-%d %H:%M")
        reading_update_fail = PressureReading(reading_datetime, 0,
                                              "ABC Sensor Pres M100", 50.163,
                                              51.435, 52.103, "UPDATED")
        self.assertEqual(
            self.reading_manager.update_reading(reading_update_fail), 0,
            "Must return 0 if seq num is not in the list")
    def test_update_reading_invalid(self):
        """ 030B - Invalid Update Reading """
        new_reading = PressureReading(
            datetime.datetime.strptime("2018-09-23 19:59", "%Y-%m-%d %H:%M"),
            "ABC Sensor New Pres M100", float(50.513), float(51.745),
            float(53.105), "GOOD")

        with self.assertRaises(ValueError):
            self.test_pres_manager.update_reading(None, None)
            self.test_pres_manager.update_reading(1, None)
            self.test_pres_manager.update_reading(None, new_reading)
            self.test_pres_manager.update_reading("", "")
            self.test_pres_manager.update_reading(1, "")
            self.test_pres_manager.update_reading("", new_reading)
    def _load_reading_row(self, row):
        """ Loads list into a PressureReading object """

        reading_datetime = datetime.datetime.strptime(
            row[PressureReadingManager.DATETIME_INDEX], "%Y-%m-%d %H:%M")

        pressure_reading = PressureReading(
            reading_datetime, row[PressureReadingManager.SENSOR_NAME_INDEX],
            int(row[PressureReadingManager.SEQ_NUM_INDEX]),
            float(row[PressureReadingManager.LOW_INDEX]),
            float(row[PressureReadingManager.AVG_INDEX]),
            float(row[PressureReadingManager.HIGH_INDEX]),
            row[PressureReadingManager.STATUS_INDEX])

        return pressure_reading
 def test_add_reading_valid(self):
     """ 020A - Valid Add Reading """
     new_reading = PressureReading(
         datetime.datetime.strptime(
             TestPressureReadingManager.TEST_TIMESTAMP,
             TestPressureReadingManager.DATE_FORMAT),
         TestPressureReadingManager.TEST_MODEL,
         TestPressureReadingManager.TEST_MIN_VALUE,
         TestPressureReadingManager.TEST_AVG_VALUE,
         TestPressureReadingManager.TEST_MAX_VALUE,
         TestPressureReadingManager.TEST_STATUS)
     added_reading = self.test_pres_manager.add_reading(new_reading)
     self.assertEqual(new_reading, added_reading)
     rows = len(self.test_pres_manager.get_all_readings())
     self.assertEqual(rows, 2)
    def _load_reading_row(self, row):
        """ Loads list into a PressureReading object """

        try:
            reading_datetime = datetime.datetime.strptime(
                row[PressureReadingManager.TIMESTAMP_INDEX], "%Y-%m-%d %H:%M")
            pres_reading = PressureReading(
                reading_datetime,
                int(row[PressureReadingManager.SEQ_NUM_INDEX]),
                row[PressureReadingManager.SENSOR_MODEL_INDEX],
                float(row[PressureReadingManager.MIN_INDEX]),
                float(row[PressureReadingManager.AVG_INDEX]),
                float(row[PressureReadingManager.MAX_INDEX]),
                row[PressureReadingManager.STATUS_INDEX])
        except:
            raise ValueError("Invalid data entry")

        return pres_reading
    def add_log_message(self, model, min_reading, avg_reading, max_reading,
                        status):
        """ Add a log message to the database """

        PressureReadingManager._validate_input(PressureReadingManager.NAME,
                                               model)
        PressureReadingManager._validate_input(
            PressureReadingManager.MIN_READING, min_reading)
        PressureReadingManager._validate_input(
            PressureReadingManager.AVERAGE_READING, avg_reading)
        PressureReadingManager._validate_input(
            PressureReadingManager.MAX_READING, max_reading)
        PressureReadingManager._validate_input(
            PressureReadingManager.READING_STATUS, status)

        session = self.DBSession()
        new_log_message = PressureReading(model, min_reading, avg_reading,
                                          max_reading, status)
        session.add(new_log_message)
        session.commit()
예제 #11
0
def create_reading(sensor_type, json_reading, seq_num=0):
    """ Returns reading if valid input, None otherwise """

    if sensor_type == "temperature":    
        try:
            reading = TemperatureReading(datetime.datetime.strptime(json_reading["timestamp"], "%Y-%m-%d %H:%M:%S.%f"),
                            seq_num, json_reading["model"], float(json_reading["min"]), float(json_reading["avg"]), 
                            float(json_reading["max"]), json_reading["status"])
        except:
            return None

    if sensor_type == "pressure":
        try:
            reading = PressureReading(datetime.datetime.strptime(json_reading["timestamp"], "%Y-%m-%d %H:%M"),
                        seq_num, json_reading["model"], float(json_reading["min"]), float(json_reading["avg"]),
                        float(json_reading["max"]), json_reading["status"])
        except:
            return None
        
    return reading