diff --git a/tconnectsync/domain/therapy_event.py b/tconnectsync/domain/therapy_event.py index 6a3b162..8f2c523 100644 --- a/tconnectsync/domain/therapy_event.py +++ b/tconnectsync/domain/therapy_event.py @@ -19,6 +19,9 @@ class TherapyEvent: self.eventDateTime = json['eventDateTime'] self.sourceRecId = json['sourceRecId'] self.rawJson = json + + def __str__(self): + return "%s(%s)" % (self.type, self.rawJson) class CGMTherapyEvent(TherapyEvent): eventID = None diff --git a/tconnectsync/sync/bolus.py b/tconnectsync/sync/bolus.py index 5107f4c..56c6b5b 100644 --- a/tconnectsync/sync/bolus.py +++ b/tconnectsync/sync/bolus.py @@ -40,9 +40,9 @@ def process_bolus_events(bolusdata, cgmEvents=None, source=""): elif not parsed.bolex_start_time and parsed.request_time: logger.warning("Setting bolex_start_time to request_time for non-completed %s extended bolus: %s parsed: %s" % (source, b, parsed)) parsed.bolex_start_time = parsed.request_time - logger.debug("process_bolus_events for incomplete bolus: %s parsed: %s" % (b.rawJson, parsed)) + logger.debug("process_bolus_events for incomplete bolus: %s parsed: %s" % (b, parsed)) elif parsed.is_extended_bolus: - logger.debug("process_bolus_events for complete extended bolus: %s parsed: %s" % (b.rawJson, parsed)) + logger.debug("process_bolus_events for complete extended bolus: %s parsed: %s" % (b, parsed)) if parsed.bg and cgmEvents: requested_at = parsed.request_time if not parsed.extended_bolus else parsed.bolex_start_time diff --git a/tests/parser/test_tconnect.py b/tests/parser/test_tconnect.py index 5fb3696..5dcc588 100644 --- a/tests/parser/test_tconnect.py +++ b/tests/parser/test_tconnect.py @@ -441,91 +441,69 @@ class TestTConnectEntryBolus(unittest.TestCase): "bolex_completion_time": None, "bolex_start_time": None })) - - entryExtendedBolusComplete = { - "actualTotalBolusRequested": 0.4, - "bg": 131, - "bolex": { - "size": 0.2, - "bolexStartDateTime": "2022-08-09T23:20:04", - "insulinDelivered": { - "completionDateTime": "2022-08-09T23:35:03", - "value": 0.2 - }, - "iob": 5.7, - "completionStatusId": 3, - "completionStatusDesc": "Completed", - "extendedBolusIsComplete": 1, - "insulinRequested": 0.2, - "bolexCompletionId": 16757133 - }, - "bolusRequestOptions": "Extended", - "bolusType": "Carb", - "carbSize": 0, - "correctionBolusSize": 0, - "correctionFactor": 30, - "declinedCorrection": 0, - "duration": 15, - "eventDateTime": "2022-08-09T23:19:15", - "eventHistoryReportDetails": "CF 1:30 - Carb Ratio 1:6 - Target BG 110
Override: Pump calculated Bolus = 0.0 units", - "eventHistoryReportEventDesc": "Food Bolus: 50% Extended 15 mins", - "foodBolusSize": 0, - "iob": 5.87, - "isQuickBolus": 0, - "note": { - "id": 0, - "indexId": "631597", - "eventTypeId": 64, - "sourceRecordId": 0, - "eventId": 0, - "active": False - }, - "requestDateTime": "2022-08-09T23:19:15", - "standard": { - "insulinDelivered": { - "completionDateTime": "2022-08-09T23:20:04", - "value": 0.2 - }, - "foodDelivered": 0, - "correctionDelivered": 0, - "insulinRequested": 0.2, - "completionStatusId": 3, - "completionStatusDesc": "Completed", - "bolusIsComplete": 1, - "bolusRequestId": 3636, - "bolusCompletionId": 3636 - }, - "standardPercent": 50, - "targetBG": 110, - "userOverride": 1, - "type": "Bolus", - "description": "Extended 50.00%/0.00", - "sourceRecId": 1209631944, - "eventTypeId": 0, - "indexId": 0, - "uploadId": 0, - "interactive": 0, - "tempRateId": 0, - "tempRateCompleted": 0, - "tempRateActivated": 0 + + + entryExtendedComplete = { + "Type": "Bolus", + "Description": "Extended 50.00%/0.00", + "BG": "131", + "IOB": "5.87", + "BolusRequestID": "3636.000", + "BolusCompletionID": "3636.000", + "CompletionDateTime": "2022-08-09T23:20:04", + "InsulinDelivered": "0.20", + "FoodDelivered": "0.00", + "CorrectionDelivered": "0.00", + "CompletionStatusID": "3", + "CompletionStatusDesc": "Completed", + "BolusIsComplete": "1", + "BolexCompletionID": "16757133", + "BolexSize": "0.20", + "BolexStartDateTime": "2022-08-09T23:20:04", + "BolexCompletionDateTime": "2022-08-09T23:35:03", + "BolexInsulinDelivered": "0.20", + "BolexIOB": "5.7", + "BolexCompletionStatusID": "3.00", + "BolexCompletionStatusDesc": "Completed", + "ExtendedBolusIsComplete": "1", + "EventDateTime": "2022-08-09T23:19:15", + "RequestDateTime": "2022-08-09T23:19:15", + "BolusType": "Carb", + "BolusRequestOptions": "Extended", + "StandardPercent": "50.00", + "Duration": "15", + "CarbSize": "0", + "UserOverride": "1", + "TargetBG": "110", + "CorrectionFactor": "30.00", + "FoodBolusSize": "0.00", + "CorrectionBolusSize": "0.00", + "ActualTotalBolusRequested": "0.40", + "IsQuickBolus": "0", + "EventHistoryReportEventDesc": "0", + "EventHistoryReportDetails": "Food Bolus: 50% Extended 15 mins", + "NoteID": "CF 1:30 - Carb Ratio 1:6 - Target BG 110 | Override: Pump calculated Bolus = 0.0 units", + "IndexID": "0", + "Note": "631597" } def test_parse_bolus_entry_extended_complete(self): self.assertEqual( - TConnectEntry.parse_bolus_entry(self.entryExtendedBolusComplete), - Bolus( - description='Extended 50.00%/0.00', - complete='1', - completion='Completed', - request_time='2022-08-09 23:19:15-04:00', - completion_time='2022-08-09 23:20:04-04:00', - insulin='0.2', - requested_insulin='0.2', - carbs='0', - bg='131', - user_override='1', - extended_bolus='1', - bolex_completion_time='2022-08-09 23:35:03-04:00', - bolex_start_time='2022-08-09 23:20:04-04:00')) + TConnectEntry.parse_bolus_entry(self.entryExtendedComplete), + Bolus(**{ + "description": "Extended 50.00%/0.00", + "complete": "1", + "completion": "Completed", + "request_time": None, + "completion_time": None, + "insulin": "0.20", + "requested_insulin": "0.40", + "carbs": "0", + "bg": "131", + "user_override": "1", + "extended_bolus": "1", + "bolex_completion_time": "2022-08-09 23:35:03-04:00", + "bolex_start_time": "2022-08-09 23:20:04-04:00" + })) diff --git a/tests/sync/test_bolus.py b/tests/sync/test_bolus.py index a4d175e..76c67b2 100644 --- a/tests/sync/test_bolus.py +++ b/tests/sync/test_bolus.py @@ -172,5 +172,23 @@ class TestBolusSync(unittest.TestCase): for d in zeroData: self.assertNotIn(TConnectEntry.parse_bolus_entry(d), bolusEvents) + def test_process_bolus_events_ciq_extended_bolus(self): + stdData = [ + TestTConnectEntryBolus.entryExtendedComplete, + ] + zeroData = [ + ] + bolusData = stdData + zeroData + + bolusEvents = process_bolus_events(bolusData) + self.assertEqual(len(bolusEvents), len(stdData)) + + self.assertListEqual(bolusEvents, [ + TConnectEntry.parse_bolus_entry(d) for d in stdData + ]) + + for d in zeroData: + self.assertNotIn(TConnectEntry.parse_bolus_entry(d), bolusEvents) + if __name__ == '__main__': unittest.main() \ No newline at end of file