Files
tconnectsync/tests/eventparser/events/test_lidpumpingresumed.py
T
James Woglom 9d8ab283a0 Add per-event-type parser tests from real captured pump-log data
One test file per event type observed in captured Tandem Source
pump-logs responses (30 types), each asserting parse/dispatch,
field round-trip, and enum/bitmask/ratio resolution against real
capture fixtures.
2026-07-01 05:26:46 +00:00

75 lines
2.7 KiB
Python

#!/usr/bin/env python3
import json
import unittest
from tconnectsync.eventparser.generic import Event
from tconnectsync.eventparser import events as eventtypes
from tconnectsync.eventparser.raw_event import RawEvent
class TestLidPumpingResumed(unittest.TestCase):
"""12: LID_PUMPING_RESUMED. Real captures all share preResumeState:100 and
only differ in insulinAmount; two fixtures show that field varying."""
maxDiff = None
def setUp(self):
# Real captured pump-log events (verbatim).
self.fixtureA = {
"deviceAssignmentId": "4ff6bebc-d4d6-4423-b123-eecfcf5a4238",
"eventCode": 12,
"sequenceGroup": 0,
"sequenceNumber": 394429,
"pumpDateTime": "2026-04-30T10:16:31",
"eventProperties": {"preResumeState": 100, "insulinAmount": 105},
"estimatedDateTime": "2026-04-30T10:16:31Z",
}
self.fixtureB = {
"deviceAssignmentId": "4ff6bebc-d4d6-4423-b123-eecfcf5a4238",
"eventCode": 12,
"sequenceGroup": 0,
"sequenceNumber": 478545,
"pumpDateTime": "2026-05-24T11:41:19",
"eventProperties": {"preResumeState": 100, "insulinAmount": 13},
"estimatedDateTime": "2026-05-24T11:41:19Z",
}
def test_dispatches_to_correct_class(self):
self.assertIsInstance(Event(self.fixtureA), eventtypes.LidPumpingResumed)
self.assertNotIsInstance(Event(self.fixtureA), RawEvent)
def test_envelope_fields(self):
ev = Event(self.fixtureA)
self.assertEqual(ev.eventId, 12)
self.assertEqual(ev.seqNum, 394429)
def test_timestamp_preserves_wall_clock(self):
ev = Event(self.fixtureA)
self.assertEqual(ev.eventTimestamp.format('YYYY-MM-DDTHH:mm:ss'),
"2026-04-30T10:16:31")
def test_plain_fields(self):
ev = Event(self.fixtureA)
self.assertEqual(ev.preresumestate, 100)
self.assertEqual(ev.insulinamount, 105)
def test_insulin_amount_varies_across_captures(self):
self.assertEqual(Event(self.fixtureA).insulinamount, 105)
self.assertEqual(Event(self.fixtureB).insulinamount, 13)
# preResumeState is constant across real captures.
self.assertEqual(Event(self.fixtureB).preresumestate, 100)
def test_todict_is_json_serializable(self):
ev = Event(self.fixtureB)
d = ev.todict()
json.dumps(d) # must not raise
self.assertEqual(d["id"], 12)
self.assertEqual(d["name"], "LID_PUMPING_RESUMED")
self.assertEqual(d["seqNum"], 478545)
self.assertEqual(d["preresumestate"], 100)
self.assertEqual(d["insulinamount"], 13)
if __name__ == "__main__":
unittest.main()