homebridge-freeathome-local-api
Version:
Control your free@home setup using the local API provided by your System Access Point
73 lines (67 loc) • 2.53 kB
text/typescript
import { Channel, Device } from "freeathome-local-api-client";
import { PlatformAccessory, Service } from "homebridge";
import { FreeAtHomeContext } from "../src/freeAtHomeContext.js";
import { SwitchSensorAccessory } from "../src/switchSensorAccessory.js";
import {
createPlatformAccessory,
MockFreeAtHomeHomebridgePlatform,
} from "./platform.mock.js";
describe("Switch Sensor Accessory", () => {
let channel: Channel;
let device: Device;
let platform: MockFreeAtHomeHomebridgePlatform;
let platformAccessory: PlatformAccessory<FreeAtHomeContext>;
beforeEach(() => {
channel = {};
device = {};
platform = new MockFreeAtHomeHomebridgePlatform();
platformAccessory = createPlatformAccessory("Switch Sensor Accessory");
platformAccessory.context = {
channel: channel,
channelId: "ch1234",
device: device,
deviceSerial: "ABB7xxxxxxxx",
};
});
afterEach(() => {
platform.resetLoggerCalls();
jasmine.clock().uninstall();
});
it("should be created", async () => {
const accessory = new SwitchSensorAccessory(platform, platformAccessory);
expect(accessory).toBeTruthy();
const instance = accessory as unknown as {
service: Service;
};
const characteristic = instance.service.getCharacteristic(
accessory.platform.Characteristic.ProgrammableSwitchEvent
);
expect(await characteristic.handleGetRequest()).toBeNull();
});
it("should ignore update if datapoint is unknown", () => {
const accessory = new SwitchSensorAccessory(platform, platformAccessory);
const instance = accessory as unknown as {
service: Service;
};
const characteristic = instance.service.getCharacteristic(
accessory.platform.Characteristic.ProgrammableSwitchEvent
);
const spy = spyOn(characteristic, "sendEventNotification");
accessory.updateDatapoint("test");
expect(spy).not.toHaveBeenCalled();
});
it("should send a notification when the datapoint is updated", () => {
const accessory = new SwitchSensorAccessory(platform, platformAccessory);
const instance = accessory as unknown as {
service: Service;
};
const characteristic = instance.service.getCharacteristic(
accessory.platform.Characteristic.ProgrammableSwitchEvent
);
const spy = spyOn(characteristic, "sendEventNotification");
accessory.updateDatapoint("idp0000");
expect(spy).toHaveBeenCalledWith(
platform.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS
);
});
});