From c275404e4e7cb3006188ed2643722559439de17e Mon Sep 17 00:00:00 2001 From: adlee-was-taken Date: Sun, 5 Apr 2026 11:57:26 -0400 Subject: [PATCH] refactor(events): drop forward-ref quote and test triggered_by default Code review follow-up on f4d66dd: - _handle_arm_request signature used "ArmStateFSM" as a string forward reference even though the type is imported at module top. _handle_event uses the bare form; match it for consistency. - Add a test asserting that omitting triggered_by in an arm-request payload defaults to "unknown". That value feeds the audit log, so it deserves explicit regression coverage. No behavior change. Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/unit/test_events.py | 22 ++++++++++++++++++++++ vigilar/events/processor.py | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_events.py b/tests/unit/test_events.py index ffc8234..b527535 100644 --- a/tests/unit/test_events.py +++ b/tests/unit/test_events.py @@ -480,3 +480,25 @@ class TestArmRequestDispatch: ) assert calls == [] + + def test_arm_request_default_triggered_by(self, test_db): + """Omitting triggered_by must default to 'unknown' (audit-log value).""" + from vigilar.events.processor import EventProcessor + + processor = EventProcessor.__new__(EventProcessor) + calls = [] + + class FakeFSM: + state = ArmState.DISARMED + + def transition(self, new_state, pin="", triggered_by="system"): + calls.append((new_state, pin, triggered_by)) + return True + + processor._handle_arm_request( + payload={"mode": "DISARMED", "pin": ""}, + fsm=FakeFSM(), + ) + + assert len(calls) == 1 + assert calls[0][2] == "unknown" diff --git a/vigilar/events/processor.py b/vigilar/events/processor.py index 1457937..7800e82 100644 --- a/vigilar/events/processor.py +++ b/vigilar/events/processor.py @@ -155,7 +155,7 @@ class EventProcessor: def _handle_arm_request( self, payload: dict[str, Any], - fsm: "ArmStateFSM", + fsm: ArmStateFSM, ) -> None: """Handle an arm/disarm request received over MQTT.