inventoresed
Version:
Z-Wave driver written entirely in JavaScript/TypeScript
103 lines (91 loc) • 2.94 kB
text/typescript
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,
},
});
});
});
});