'use strict'; const { getProtocol, isSensorOnly, isGateway } = require('../src/module-types'); describe('getProtocol', () => { test('pool controller → linesControl', () => { expect(getProtocol('lr-pc')).toBe('linesControl'); expect(getProtocol('lr-niv')).toBe('linesControl'); }); test('irrigation → manualCommand', () => { expect(getProtocol('lr-ag')).toBe('manualCommand'); expect(getProtocol('lr-ip-eco')).toBe('manualCommand'); }); test('unknown type → linesControl with console warning', () => { const warn = jest.spyOn(console, 'warn').mockImplementation(() => {}); expect(getProtocol('lr-unknown-xyz')).toBe('linesControl'); expect(warn).toHaveBeenCalled(); warn.mockRestore(); }); }); describe('isSensorOnly', () => { test('sensor modules return true', () => { expect(isSensorOnly('lr-ms')).toBe(true); expect(isSensorOnly('lr-pr')).toBe(true); expect(isSensorOnly('pool-level-sensor')).toBe(true); expect(isSensorOnly('lr-mas')).toBe(true); }); test('actuator modules return false', () => { expect(isSensorOnly('lr-pc')).toBe(false); expect(isSensorOnly('lr-ag')).toBe(false); expect(isSensorOnly('lr-niv')).toBe(false); }); }); describe('isGateway', () => { test('gateway types return true', () => { expect(isGateway('lr-mb-10')).toBe(true); expect(isGateway('lr-mb-30')).toBe(true); expect(isGateway('wf-mb')).toBe(true); }); test('non-gateway types return false', () => { expect(isGateway('lr-pc')).toBe(false); expect(isGateway('lr-ms')).toBe(false); }); });