import unittest from frigate_camera_control_bridge.app import CameraControlBridge class DummyAction: def __init__(self, action_id="example_camera_white", kind="hikvision_colorvu"): self.id = action_id self.platform = "switch" self.kind = kind self.state = "ON" self.auto_off_seconds = 600 self.auto_off_at = 1234567890 self.snapshot_version = 7 self.cfg = { "id": self.id, "name": "Example white light", "name_key": "action.manual_white", "requires_ack": False, "snapshot": { "camera": "example", "frigate_url": "http://frigate.example.test:5000", }, } def command_list(self): return ["on", "off"] def display_name(self, _lang): return "Example white light" class ActionPayloadTest(unittest.TestCase): def setUp(self): self.bridge = object.__new__(CameraControlBridge) self.bridge.default_language = "en" self.action = DummyAction() self.bridge.actions_snapshot = lambda: [self.action] def test_api_action_includes_ui_state_fields(self): payload = CameraControlBridge.api_action(self.bridge, self.action, "en") self.assertEqual(payload["id"], "example_camera_white") self.assertEqual(payload["state"], "ON") self.assertEqual(payload["state_label"], "ON") self.assertEqual(payload["snapshot_version"], 7) self.assertEqual(payload["auto_off_at"], 1234567890) def test_action_payload_returns_updated_action_for_json_gui(self): payload = CameraControlBridge.action_payload( self.bridge, "en", self.action, "on", {"ok": True, "command": "on"}, "/?lang=en", ) self.assertTrue(payload["ok"]) self.assertEqual(payload["message"], "Command sent.") self.assertEqual(payload["redirect_url"], "/?lang=en") self.assertEqual(payload["action"]["id"], "example_camera_white") def test_all_off_payload_includes_all_actions_for_gui_refresh(self): action = DummyAction("example_all_off", kind="all_off") payload = CameraControlBridge.action_payload( self.bridge, "en", action, "press", {"ok": True, "results": []}, "/?lang=en", ) self.assertEqual(payload["action_id"], "example_all_off") self.assertEqual(len(payload["actions"]), 1) self.assertEqual(payload["actions"][0]["id"], "example_camera_white") if __name__ == "__main__": unittest.main()