@shadman-a/homebridge-my-ac
Version:
A Homebridge plugin for controlling/monitoring LG ThinQ devices via LG ThinQ platform.
48 lines • 1.74 kB
JavaScript
import { describe, test, expect } from '@jest/globals';
import Helper from '../../v1/helper.js';
import { Device } from '../../lib/Device.js';
describe('v1 Helper.prepareControlData', () => {
test('builds BINARY(BYTE) payload with boolean -> numeric coercion', () => {
const device = new Device({
deviceId: 'dev1',
alias: 'd',
modelJsonUri: '',
deviceType: 0,
snapshot: { raw: {} },
});
device.deviceModel = {
data: {
ControlWifi: {
type: 'BINARY(BYTE)',
action: { SetControl: { data: '[{{myKey}}]' } },
},
},
};
const out = Helper.prepareControlData(device, 'myKey', true);
expect(out.value).toBe('ControlData');
const expected = Buffer.from(String.fromCharCode(1)).toString('base64');
expect(out.data).toBe(expected);
expect(out.format).toBe('B64');
});
test('non-numeric replacement falls back to 0', () => {
const device = new Device({
deviceId: 'dev2',
alias: 'd',
modelJsonUri: '',
deviceType: 0,
snapshot: { raw: {} },
});
device.deviceModel = {
data: {
ControlWifi: {
type: 'BINARY(BYTE)',
action: { SetControl: { data: '[{{k}}]' } },
},
},
};
const out = Helper.prepareControlData(device, 'k', 'non-numeric');
const expected = Buffer.from(String.fromCharCode(0)).toString('base64');
expect(out.data).toBe(expected);
});
});
//# sourceMappingURL=prepareControlData.spec.js.map