def test_handle_global_mapping_fail(self, _get_global_vendor_point_record, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-BP-001", "point_type": "BP"} record = {"site_id": "123456", "offset": 0, "value": "a", "timestamp": "2014-09-07 23:00"} def get_global_vendor_point_record_side_effect(mapping, record, error_messages): error_messages.append('Test') _get_global_vendor_point_record.side_effect = get_global_vendor_point_record_side_effect global_record = None _get_global_vendor_point_record.return_value = global_record rv = ProcessFieldserverRecordsReturn() error_messages = [] fieldserver_file_handler._handle_global_mapping(mapping, record, rv, error_messages) _get_global_vendor_point_record.assert_called_with(mapping, record, error_messages) self.assertEqual(len(error_messages), 1) self.assertEqual(len(rv.global_vendor_point_records), 0) self.assertEqual(error_messages[0], 'Test')
def test_get_processed_fieldserver_records_invalid_bool_value(self, _handle_record, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mappings_dict = {("123456", 0): [{"syrx_num": "400000-0001-237323-BP-001", "point_type": "BP"}]} fieldserver_file_handler.get_mappings_dict = Mock(return_value=mappings_dict) records = [{"site_id": "123456", "offset": 0, "value": "a", "timestamp": "2014-09-07 23:00"}] def handle_record_side_effect(mapping, record, rv, error_messages): error_messages.append("Invalid value for boolean point") _handle_record.side_effect = handle_record_side_effect rv = fieldserver_file_handler.get_processed_fieldserver_records(records) _handle_record.assert_called_with(mappings_dict[("123456", 0)][0], records[0], rv, ["Invalid value for boolean point"]) assert len(rv.good_records) == 0 assert len(rv.bad_records) == 1 assert len(rv.unmapped_vendor_points) == 0 assert len(rv.global_vendor_point_records) == 0 assert rv.bad_records[0] == {"site_id": "123456", "offset": 0, "value": "a", "timestamp": "2014-09-07 23:00", "error": {"date": fieldserver_file_handler.date_time_str, "messages": ["Invalid value for boolean point"]}}
def test_handle_global_mapping_success(self, _get_global_vendor_point_record, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-BP-001", "point_type": "BP"} record = {"site_id": "123456", "offset": 0, "value": "ON", "timestamp": "2014-09-07 23:00"} global_record = {"source": "fieldserver", "fieldserver_site_id": "123456", "fieldserver_offset": 0, "value": 1.0, "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "date_added": fieldserver_file_handler.date_time_str} _get_global_vendor_point_record.return_value = global_record rv = ProcessFieldserverRecordsReturn() error_messages = [] fieldserver_file_handler._handle_global_mapping(mapping, record, rv, error_messages) _get_global_vendor_point_record.assert_called_with(mapping, record, error_messages) self.assertEqual(len(error_messages), 0) self.assertEqual(len(rv.global_vendor_point_records), 1) self.assertEqual(rv.global_vendor_point_records[0], global_record)
def test_get_processed_fieldserver_records_nonexistent_mapping(self, _handle_record, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mappings_dict = {} fieldserver_file_handler.get_mappings_dict = Mock(return_value=mappings_dict) records = [{"site_id": "123456", "offset": 0, "value": "0.0", "timestamp": "2014-09-07 23:00"}] rv = fieldserver_file_handler.get_processed_fieldserver_records(records) assert not _handle_record.called assert len(rv.good_records) == 0 assert len(rv.bad_records) == 1 assert len(rv.unmapped_vendor_points) == 1 assert len(rv.global_vendor_point_records) == 0 assert rv.bad_records[0] == {"site_id": "123456", "offset": 0, "value": "0.0", "timestamp": "2014-09-07 23:00", "error": {"date": fieldserver_file_handler.date_time_str, "messages": ["Could not find vendor mapping"]}} assert rv.unmapped_vendor_points[0] == {"source": "fieldserver", "fieldserver_site_id": "123456", "fieldserver_offset": 0, "date_added": fieldserver_file_handler.date_time_str}
def test_get_global_vendor_point_record_invalid_bool_value(self, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-EP-001", "point_type": "BP", "global": True} row = {"site_id": "123456", "offset": 0, "value": "a", "timestamp": "2014-09-07 23:00"} global_record = None rv = ProcessFieldserverRecordsReturn() error_messages = [] function_rv = fieldserver_file_handler._get_global_vendor_point_record(mapping, row, error_messages) self.assertEqual(len(error_messages), 1) self.assertEqual(error_messages[0], "Invalid value for boolean point") self.assertEqual(function_rv, global_record)
def test_handle_record_invalid_bool_value(self, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-BP-001", "point_type": "BP"} record = {"site_id": "123456", "offset": 0, "value": "a", "timestamp": "2014-09-07 23:00"} rv = ProcessFieldserverRecordsReturn() error_messages = [] fieldserver_file_handler._handle_record(mapping, record, rv, error_messages) assert len(error_messages) == 1 assert len(rv.good_records) == 0 assert error_messages == ["Invalid value for boolean point"]
def test_get_processed_fieldserver_records_successful_global_multi_mapping(self, _handle_global_mapping, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mappings_dict = {("123456", 0): [{"syrx_num": "400000-0001-237323-EP-001", "point_type": "EP", "global": True}, {"syrx_num": "400000-0002-237323-NP-001", "point_type": "EP", "global": True}]} fieldserver_file_handler.get_mappings_dict = Mock(return_value=mappings_dict) records = [{"site_id": "123456", "offset": 0, "value": "100.1", "timestamp": "2014-09-07 23:00"}] def handle_global_mapping_side_effect(mapping, record, rv, error_messages): if mapping["point_type"] in ["EP", "NP", "PP"]: record["value"] = float(record["value"]) elif mapping["point_type"] == "BP": record["value"] = float(record["value"]) if record["value"] > 0: record["value"] = 1.0 else: record["value"] = 0.0 record["timestamp"] = fieldserver_file_handler.get_string_timestamp(record["timestamp"]) global_record = { "source": "fieldserver", "fieldserver_site_id": str(record["site_id"]), "fieldserver_offset": str(record["offset"]), "timestamp": record["timestamp"], "value": record["value"], "date_added": fieldserver_file_handler.date_time_str } rv.global_vendor_point_records.append(global_record) _handle_global_mapping.side_effect = handle_global_mapping_side_effect rv = fieldserver_file_handler.get_processed_fieldserver_records(records) _handle_global_mapping.assert_has_calls([call(mappings_dict[("123456", 0)][0], records[0], rv, [])]) assert len(rv.good_records) == 0 assert len(rv.bad_records) == 0 assert len(rv.unmapped_vendor_points) == 0 assert len(rv.global_vendor_point_records) == 1 assert rv.global_vendor_point_records[0] == {"source": "fieldserver", "fieldserver_site_id": "123456", "fieldserver_offset": "0", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 100.1, "date_added": fieldserver_file_handler.date_time_str}
def test_handle_record_successful(self, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-EP-001", "point_type": "EP"} row = {"site_id": "123456", "offset": 0, "value": "100.1", "timestamp": "2014-09-07 23:00"} rv = ProcessFieldserverRecordsReturn() error_messages = [] fieldserver_file_handler._handle_record(mapping, row, rv, error_messages) assert len(rv.good_records) == 1 assert len(rv.bad_records) == 0 assert len(rv.unmapped_vendor_points) == 0 assert len(rv.global_vendor_point_records) == 0 assert len(error_messages) == 0 assert rv.good_records[0] == {"syrx_num": "400000-0001-237323-EP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 100.1, "date_added": fieldserver_file_handler.date_time_str}
def test_get_global_vendor_point_record_success(self, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mapping = {"syrx_num": "400000-0001-237323-EP-001", "point_type": "EP", "global": True} row = {"site_id": "123456", "offset": 0, "value": "100.1", "timestamp": "2014-09-07 23:00"} global_record = { "source": "fieldserver", "fieldserver_site_id": "123456", "fieldserver_offset": 0, "value": 100.1, "timestamp": fieldserver_file_handler.get_string_timestamp(row["timestamp"]), "date_added": fieldserver_file_handler.date_time_str, 'date': pytz.utc.localize(dateutil.parser.parse(row['timestamp'])) } rv = ProcessFieldserverRecordsReturn() error_messages = [] function_rv = fieldserver_file_handler._get_global_vendor_point_record(mapping, row, error_messages) self.assertEqual(len(error_messages), 0) self.assertEqual(function_rv, global_record)
def test_get_processed_fieldserver_records_successful(self, _handle_record, uow): fieldserver_file_handler = FieldserverFileHandler() fieldserver_file_handler.logger = Mock() fieldserver_file_handler.date_time_str = Mock() fieldserver_file_handler.get_string_timestamp = Mock() mappings_dict = {("123456", 0): [{"syrx_num": "400000-0001-237323-EP-001", "point_type": "EP"}], ("123456", 1): [{"syrx_num": "400000-0001-237323-NP-001", "point_type": "NP"}], ("123456", 2): [{"syrx_num": "400000-0001-237323-PP-001", "point_type": "PP"}], ("123456", 3): [{"syrx_num": "400000-0001-237323-BP-001", "point_type": "BP"}]} fieldserver_file_handler.get_mappings_dict = Mock(return_value=mappings_dict) records = [{"site_id": "123456", "offset": 0, "value": "100.1", "timestamp": "2014-09-07 23:00"}, {"site_id": "123456", "offset": 1, "value": "100.2", "timestamp": "2014-09-07 23:00"}, {"site_id": "123456", "offset": 2, "value": "100.3", "timestamp": "2014-09-07 23:00"}, {"site_id": "123456", "offset": 3, "value": "1.0", "timestamp": "2014-09-07 23:00"}, {"site_id": "123456", "offset": 3, "value": "0.0", "timestamp": "2014-09-07 23:15"}] def handle_record_side_effect(mapping, record, rv, error_messages): if mapping["point_type"] in ["EP", "NP", "PP"]: record["value"] = float(record["value"]) elif mapping["point_type"] == "BP": record["value"] = float(record["value"]) if record["value"] > 0: record["value"] = 1.0 else: record["value"] = 0.0 record["timestamp"] = fieldserver_file_handler.get_string_timestamp(record["timestamp"]) good_record = { "syrx_num": mapping["syrx_num"], "timestamp": record["timestamp"], "value": record["value"], "date_added": fieldserver_file_handler.date_time_str } rv.good_records.append(good_record) _handle_record.side_effect = handle_record_side_effect rv = fieldserver_file_handler.get_processed_fieldserver_records(records) _handle_record.assert_has_calls([call(mappings_dict[("123456", 0)][0], records[0], rv, []), call(mappings_dict[("123456", 1)][0], records[1], rv, []), call(mappings_dict[("123456", 2)][0], records[2], rv, []), call(mappings_dict[("123456", 3)][0], records[3], rv, []), call(mappings_dict[("123456", 3)][0], records[4], rv, [])]) assert len(rv.good_records) == 5 assert len(rv.bad_records) == 0 assert len(rv.unmapped_vendor_points) == 0 assert len(rv.global_vendor_point_records) == 0 assert rv.good_records[0] == {"syrx_num": "400000-0001-237323-EP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 100.1, "date_added": fieldserver_file_handler.date_time_str} assert rv.good_records[1] == {"syrx_num": "400000-0001-237323-NP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 100.2, "date_added": fieldserver_file_handler.date_time_str} assert rv.good_records[2] == {"syrx_num": "400000-0001-237323-PP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 100.3, "date_added": fieldserver_file_handler.date_time_str} assert rv.good_records[3] == {"syrx_num": "400000-0001-237323-BP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 1.0, "date_added": fieldserver_file_handler.date_time_str} assert rv.good_records[4] == {"syrx_num": "400000-0001-237323-BP-001", "timestamp": fieldserver_file_handler.get_string_timestamp.return_value, "value": 0.0, "date_added": fieldserver_file_handler.date_time_str}