UNPKG

inventoresed

Version:

Z-Wave driver written entirely in JavaScript/TypeScript

83 lines (71 loc) 2.32 kB
import { CommandClass, getCommandClass, ZWavePlusCC, ZWavePlusCommand, } from "@zwave-js/cc"; import { CommandClasses, TransmitOptions } from "@zwave-js/core"; import { createTestingHost } from "@zwave-js/host"; import type { Driver } from "../../driver/Driver"; import { ZWaveNode } from "../../node/Node"; import { SendDataRequest } from "../../serialapi/transport/SendDataMessages"; import { assertCC } from "../assertCC"; import { createEmptyMockDriver } from "../mocks"; const host = createTestingHost(); describe("lib/commandclass/ZWavePlusCC => ", () => { const cc = new ZWavePlusCC(host, { nodeId: 9 }); let serialized: Buffer; it("should be a CommandClass", () => { expect(cc).toBeInstanceOf(CommandClass); }); it(`with command class "Z-Wave Plus Info"`, () => { expect(getCommandClass(cc)).toBe(CommandClasses["Z-Wave Plus Info"]); }); it("should serialize correctly", () => { const req = new SendDataRequest(host, { command: cc, transmitOptions: TransmitOptions.DEFAULT, callbackId: 36, }); cc.ccCommand = ZWavePlusCommand.Get; serialized = req.serialize(); // A real message from OZW expect(serialized).toEqual( Buffer.from("0109001309025e012524b0", "hex"), ); }); describe.skip(`interview()`, () => { const fakeDriver = createEmptyMockDriver(); const node = new ZWaveNode(2, fakeDriver as unknown as Driver); beforeAll(() => { fakeDriver.sendMessage.mockImplementation(() => Promise.resolve({ command: {} }), ); fakeDriver.controller.nodes.set(node.id, node); }); beforeEach(() => fakeDriver.sendMessage.mockClear()); afterAll(() => { fakeDriver.sendMessage.mockImplementation(() => Promise.resolve()); node.destroy(); }); it("should send a ZWavePlusCC.Get", async () => { node.addCC(CommandClasses["Z-Wave Plus Info"], { isSupported: true, }); const cc = node.createCCInstance( CommandClasses["Z-Wave Plus Info"], )!; await cc.interview(fakeDriver); expect(fakeDriver.sendMessage).toBeCalled(); assertCC(fakeDriver.sendMessage.mock.calls[0][0], { cc: ZWavePlusCC, nodeId: node.id, ccValues: { ccCommand: ZWavePlusCommand.Get, }, }); }); it.todo("Test the behavior when the request failed"); it.todo("Test the behavior when the request succeeds"); }); });