diff --git a/pytr/event.py b/pytr/event.py index a923403..7d2390b 100644 --- a/pytr/event.py +++ b/pytr/event.py @@ -743,7 +743,7 @@ def _parse_card_note(event_dict: Dict[Any, Any]) -> Optional[str]: Returns: Optional[str]: note """ - eventTypeStr = event_dict.get("eventType", "") + eventTypeStr = event_dict.get("eventType") or "" if eventTypeStr.startswith("card_"): return eventTypeStr diff --git a/tests/aktien_erhalten_null_eventType.json b/tests/aktien_erhalten_null_eventType.json new file mode 100644 index 0000000..62a98c1 --- /dev/null +++ b/tests/aktien_erhalten_null_eventType.json @@ -0,0 +1,27 @@ +{ + "id": "9e81acd0-3fe1-409b-abfd-96f26088eeb0", + "timestamp": "2025-03-15T10:00:00.000+0000", + "title": "AI & Big Data USD (Acc)", + "icon": "logos/IE000716YHJ7/v2", + "subtitle": "Aktien erhalten", + "eventType": null, + "action": { + "type": "timelineDetail", + "payload": "9e81acd0-3fe1-409b-abfd-96f26088eeb0" + }, + "source": "timelineActivity", + "details": { + "id": "9e81acd0-3fe1-409b-abfd-96f26088eeb0", + "sections": [ + { + "title": "Du hast Aktien erhalten", + "data": { + "icon": "logos/IE000716YHJ7/v2", + "timestamp": "2025-03-15T10:00:00.000Z", + "status": "executed" + }, + "type": "header" + } + ] + } +} diff --git a/tests/test_events.py b/tests/test_events.py index 1bd47a8..d7de399 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -2005,6 +2005,9 @@ def test_events(): } ], }, + { + "filename": "aktien_erhalten_null_eventType.json", + }, ] # Create an instance of EventCsvFormatter @@ -2053,3 +2056,10 @@ def test_events(): entry.setdefault("ISIN2", None) entry.setdefault("Stück2", None) assert transactions == rowtransactions + + +def test_parse_card_note_returns_none_when_event_type_is_null(): + """Regression for #350.""" + assert Event._parse_card_note({"eventType": None}) is None + assert Event._parse_card_note({}) is None + assert Event._parse_card_note({"eventType": "card_refund"}) == "card_refund"