Files
ReinLoopTest/ReinLoop/tests/test_device_heartbeat.py
T
2026-08-03 11:16:49 +08:00

27 lines
1.1 KiB
Python

import importlib.util
from pathlib import Path
import sys
import types
import unittest
from unittest.mock import patch
MODULE_PATH = Path(__file__).resolve().parents[1] / "core" / "device_heartbeat.py"
SPEC = importlib.util.spec_from_file_location("device_heartbeat_under_test", MODULE_PATH)
HEARTBEAT = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(HEARTBEAT)
class DeviceHeartbeatTests(unittest.TestCase):
def test_sends_current_device_id_to_server(self):
calls = []
requests_module = types.ModuleType("requests")
api_module = types.ModuleType("api")
api_module.device_post = lambda payload, timeout=5: (
calls.append((payload, timeout)) or {"success": True, "lastSeenAt": "2026-07-28T00:00:00.000Z"}
)
with patch.dict(sys.modules, {"requests": requests_module, "api": api_module}):
timestamp = HEARTBEAT.heartbeat_device(timeout=7)
self.assertEqual(timestamp, "2026-07-28T00:00:00.000Z")
self.assertEqual(calls, [({"type": "deviceHeartbeat"}, 7)])