Files
integrations/test/zwave_js/test.zwave_js.mapper.node.ts
T

45 lines
1.6 KiB
TypeScript

import { expect, tap } from '@git.zone/tstest/tapbundle';
import { ZwaveJsMapper } from '../../ts/integrations/zwave_js/index.js';
const snapshot = ZwaveJsMapper.toSnapshot({
version: { serverVersion: '1.39.0', driverVersion: '15.0.0', homeId: 123456 },
controller: { homeId: 123456, ownNodeId: 1 },
nodes: [{
nodeId: 2,
name: 'Living Room Switch',
manufacturer: 'Zooz',
productLabel: 'ZEN71',
status: 'alive',
ready: true,
values: {
'37-0-currentValue': {
commandClass: 37,
commandClassName: 'Binary Switch',
endpoint: 0,
property: 'currentValue',
metadata: { label: 'Switch', type: 'boolean', readable: true, writeable: true },
value: true,
},
'50-0-value': {
commandClass: 50,
commandClassName: 'Meter',
endpoint: 0,
property: 'value',
propertyKey: 'Electric_kWh_Consumed',
metadata: { label: 'Electric consumption', type: 'number', readable: true, writeable: false, unit: 'kWh' },
value: 12.4,
},
},
}],
});
tap.test('maps Z-Wave JS nodes and values to devices and entities', async () => {
const devices = ZwaveJsMapper.toDevices(snapshot);
const entities = ZwaveJsMapper.toEntities(snapshot);
expect(devices.some((deviceArg) => deviceArg.id === 'zwave_js.node.2')).toBeTrue();
expect(entities.some((entityArg) => entityArg.platform === 'switch' && entityArg.state === 'on')).toBeTrue();
expect(entities.some((entityArg) => entityArg.platform === 'sensor' && entityArg.state === 12.4)).toBeTrue();
});
export default tap.start();