import assert from 'node:assert/strict'; import { HeartbeatProcessor } from '../src/processor/heartbeatProcessor.js'; describe('HeartbeatProcessor smoke', () => { it('decodes JSON buffer into object', () => { const processor = new HeartbeatProcessor( { batchSize: 100, batchTimeout: 1000 }, { insertHeartbeatEvents: async () => {} } ); const payload = { ts_ms: 1700000000123, hotel_id: 1, room_id: 2, device_id: 'd', ip: '127.0.0.1', power_state: 1, guest_type: 0, cardless_state: 0, service_mask: 1, pms_state: 1, carbon_state: 0, device_count: 1, comm_seq: 1 }; const message = { value: Buffer.from(JSON.stringify(payload), 'utf8') }; const decoded = processor.unpackMessage(message); assert.equal(decoded.hotel_id, 1); }); it('accepts camelCase fields via normalizeHeartbeat', () => { const processor = new HeartbeatProcessor( { batchSize: 100, batchTimeout: 1000 }, { insertHeartbeatEvents: async () => {} } ); const payload = { tsMs: 1700000000123, hotelId: 1, roomId: 2, deviceId: 'd', ip: '127.0.0.1', powerState: 1, guestType: 0, cardlessState: 0, serviceMask: 1, pmsState: 1, carbonState: 0, deviceCount: 1, commSeq: 1 }; assert.equal(processor.validateData(payload), true); }); });