UNPKG

inventoresed

Version:

Z-Wave driver written entirely in JavaScript/TypeScript

103 lines (91 loc) 2.94 kB
import { HumidityControlOperatingState, HumidityControlOperatingStateCC, HumidityControlOperatingStateCCGet, HumidityControlOperatingStateCCReport, HumidityControlOperatingStateCommand, } from "@zwave-js/cc"; import { CommandClasses } from "@zwave-js/core"; import { createTestingHost } from "@zwave-js/host"; import type { Driver } from "../../driver/Driver"; import { ZWaveNode } from "../../node/Node"; import { assertCC } from "../assertCC"; import { createEmptyMockDriver } from "../mocks"; const host = createTestingHost(); function buildCCBuffer(payload: Buffer): Buffer { return Buffer.concat([ Buffer.from([ CommandClasses["Humidity Control Operating State"], // CC ]), payload, ]); } describe("lib/commandclass/HumidityControlOperatingStateCC => ", () => { it("the Get command should serialize correctly", () => { const cc = new HumidityControlOperatingStateCCGet(host, { nodeId: 1, }); const expected = buildCCBuffer( Buffer.from([ HumidityControlOperatingStateCommand.Get, // CC Command ]), ); expect(cc.serialize()).toEqual(expected); }); it("the Report command should be deserialized correctly", () => { const ccData = buildCCBuffer( Buffer.from([ HumidityControlOperatingStateCommand.Report, // CC Command HumidityControlOperatingState.Humidifying, // state ]), ); const cc = new HumidityControlOperatingStateCCReport(host, { nodeId: 1, data: ccData, }); expect(cc.state).toBe(HumidityControlOperatingState.Humidifying); }); // it("the CC values should have the correct metadata", () => { // // Readonly, 0-99 // const currentValueMeta = getCCValueMetadata( // CommandClasses["Humidity Control Operating State"], // "state", // ); // expect(currentValueMeta).toMatchObject({ // states: enumValuesToMetadataStates(HumidityControlOperatingState), // label: "Humidity control operating state", // }); // }); describe.skip(`interview()`, () => { const host = createEmptyMockDriver(); const node = new ZWaveNode(2, host as unknown as Driver); beforeAll(() => { host.sendMessage.mockImplementation(() => Promise.resolve({ command: {} }), ); host.controller.nodes.set(node.id, node); }); beforeEach(() => host.sendMessage.mockClear()); afterAll(() => { host.sendMessage.mockImplementation(() => Promise.resolve()); node.destroy(); }); it("should send a HumidityControlOperatingStateCC.Get", async () => { node.addCC(CommandClasses["Humidity Control Operating State"], { isSupported: true, }); const cc = node.createCCInstance( CommandClasses["Humidity Control Operating State"], )!; await cc.interview(host); expect(host.sendMessage).toBeCalled(); assertCC(host.sendMessage.mock.calls[0][0], { cc: HumidityControlOperatingStateCC, nodeId: node.id, ccValues: { ccCommand: HumidityControlOperatingStateCommand.Get, }, }); }); }); });