homebridge-ecowitt-weather-sensors
Version:
Homebridge support for your Fine Offset weather station (Ecowitt, Ambient, Froggit, GoGen, and more)
88 lines (68 loc) • 3.09 kB
text/typescript
import { expect } from 'chai';
import { BASE } from './../../../src/devices/BASE';
import { createPlatform, api } from './../../driver';
//------------------------------------------------------------------------------
let platform = null;
let accessory = null;
let device = null;
const dataReport = {
"dateutc": "2024-07-24 19:04:22",
"tempinf": "80.78",
"humidityin": "49"
};
const configs = ["v1Default", "v1Full", "v2Default", "v2Full"];
configs.forEach(config => {
describe(`BASE device should be configured ${config}`, () => {
before('Initialize platform', () => {
platform = createPlatform(config);
accessory = new api.platformAccessory('Accessory', "5746853e-4fee-4e47-97dd-53065ef1de03")
platform.baseStationInfo.protocol = "Ecowitt";
platform.config.nameOverrides = [];
platform.config.hidden = {};
device = new BASE(platform, accessory, "GW1000");
});
beforeEach('Reset config', () => {
platform.config.nameOverrides = [];
platform.config.hidden = {};
});
it('Services are created', (done) => {
expect(device.temperature).to.not.be.undefined;
expect(device.humidity).to.not.be.undefined;
expect(device.temperature.service.displayName).to.equal("Temperature");
expect(device.humidity.service.displayName).to.equal("Humidity");
done();
});
it('Update is called successfully', (done) => {
device.update(dataReport);
expect(device.humidity.service.characteristics[0].value).to.equal("Humidity 49 %")
expect(device.temperature.service.characteristics[0].value).to.equal("Temperature 80.60°F")
done();
});
it('Services are created with name overrides', (done) => {
platform.config.nameOverrides[0] = {"key": "BASE:indoorTemperature", "value": "Test Temperature Name"};
platform.config.nameOverrides[1] = {"key": "BASE:indoorHumidity", "value": "Test Humidity Name"};
device = new BASE(platform, accessory, "GW1000");
expect(device.temperature).to.not.be.undefined;
expect(device.humidity).to.not.be.undefined;
expect(device.temperature.service.characteristics[0].value).to.equal("Test Temperature Name");
expect(device.humidity.service.characteristics[0].value).to.equal("Test Humidity Name");
done();
});
it('Services are not created when hidden with general override', (done) => {
platform.config.hidden["indoorTemperature"] = true;
platform.config.hidden["indoorHumidity"] = true;
device = new BASE(platform, accessory, "GW1000");
expect(device.temperature).to.be.undefined;
expect(device.humidity).to.be.undefined;
done();
});
it('Services are not created when hidden with device-specific override', (done) => {
platform.config.hidden["BASE:indoorTemperature"] = true;
platform.config.hidden["BASE:indoorHumidity"] = true;
device = new BASE(platform, accessory, "GW1000");
expect(device.temperature).to.be.undefined;
expect(device.humidity).to.be.undefined;
done();
});
});
});