diff --git a/package.json b/package.json index 3c7d31d13..dca5d0a36 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "zive": "*" }, "devDependencies": { - "chai": "*", "eslint": "*", "eslint-config-google": "*", "eslint-plugin-jest": "^22.3.0", diff --git a/test/controller.test.js b/test/controller.test.js index 59b5f65cc..187d023e7 100644 --- a/test/controller.test.js +++ b/test/controller.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const sinon = require('sinon'); const Controller = require('../lib/controller'); const settings = require('../lib/util/settings'); @@ -35,11 +34,8 @@ describe('Controller', () => { const device = {ieeeAddr: '0x12345678', modelId: 'TRADFRI bulb E27 CWS opal 600lm'}; const message = utils.zigbeeMessage(device, 'genOnOff', 'devChange', {onOff: 1}, 1); controller.onZigbeeMessage(message); - assert.isTrue(mqttPublish.calledOnce); - assert.strictEqual( - mqttPublish.getCall(0).args[1], - JSON.stringify({state: 'ON'}) - ); + expect(mqttPublish.calledOnce).toBe(true); + expect(mqttPublish.getCall(0).args[1]).toBe(JSON.stringify({state: 'ON'})); }); it('Should handle a zigbee message when include_device_information is set', () => { @@ -60,22 +56,19 @@ describe('Controller', () => { const device = {ieeeAddr: '0x12345678', modelId: 'TRADFRI bulb E27 CWS opal 600lm'}; const message = utils.zigbeeMessage(device, 'genOnOff', 'devChange', {onOff: 1}, 1); controller.onZigbeeMessage(message); - assert.isTrue(mqttPublish.calledOnce); - assert.strictEqual( - mqttPublish.getCall(0).args[1], + expect(mqttPublish.calledOnce).toBe(true); + expect(mqttPublish.getCall(0).args[1]).toBe( `{"state":"ON","device":{"ieeeAddr":"0x12345678","friendlyName":"test",` + `"manufName":"IKEA","modelId":"TRADFRI bulb E27 CWS opal 600lm"}}` ); - }); + } + ); it('Should output to json by default', () => { const payload = {temperature: 1, humidity: 2}; controller.publishEntityState('0x12345678', payload); - assert.isTrue(mqttPublish.calledOnce); - assert.deepEqual( - JSON.parse(mqttPublish.getCall(0).args[1]), - payload - ); + expect(mqttPublish.calledOnce).toBe(true); + expect(JSON.parse(mqttPublish.getCall(0).args[1])).toEqual(payload); }); it('Should output to attribute', () => { @@ -95,11 +88,11 @@ describe('Controller', () => { const payload = {temperature: 1, humidity: 2}; controller.publishEntityState('0x12345678', payload); - assert.isTrue(mqttPublish.calledTwice); - assert.deepEqual(mqttPublish.getCall(0).args[0], 'test/temperature'); - assert.deepEqual(mqttPublish.getCall(0).args[1], '1'); - assert.deepEqual(mqttPublish.getCall(1).args[0], 'test/humidity'); - assert.deepEqual(mqttPublish.getCall(1).args[1], '2'); + expect(mqttPublish.calledTwice).toBe(true); + expect(mqttPublish.getCall(0).args[0]).toEqual('test/temperature'); + expect(mqttPublish.getCall(0).args[1]).toEqual('1'); + expect(mqttPublish.getCall(1).args[0]).toEqual('test/humidity'); + expect(mqttPublish.getCall(1).args[1]).toEqual('2'); }); }); }); diff --git a/test/data.test.js b/test/data.test.js index 942e242c8..e2dba1fa0 100644 --- a/test/data.test.js +++ b/test/data.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const data = require('../lib/util/data.js'); const path = require('path'); @@ -7,7 +6,7 @@ describe('Data', () => { it('Should return correct path', () => { const expected = path.normalize(path.join(__dirname, '..', 'data')); const actual = data.getPath(); - assert.strictEqual(actual, expected); + expect(actual).toBe(expected); }); it('Should return correct path when ZIGBEE2MQTT_DATA set', () => { @@ -15,7 +14,7 @@ describe('Data', () => { process.env.ZIGBEE2MQTT_DATA = expected; data._reload(); const actual = data.getPath(); - assert.strictEqual(actual, expected); + expect(actual).toBe(expected); delete process.env.ZIGBEE2MQTT_DATA; data._reload(); }); diff --git a/test/deviceAvailability.test.js b/test/deviceAvailability.test.js index ec966239b..88debd665 100644 --- a/test/deviceAvailability.test.js +++ b/test/deviceAvailability.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const sinon = require('sinon'); const Availability = require('../lib/extension/deviceAvailability'); const utils = require('./utils'); @@ -22,7 +21,7 @@ describe('Availability', () => { type: 'Router', }; - assert.isTrue(availability.isPingable(device)); + expect(availability.isPingable(device)).toBe(true); }); it('Battery device should not be a pingable device', () => { @@ -31,7 +30,7 @@ describe('Availability', () => { type: 'EndDevice', }; - assert.isFalse(availability.isPingable(device)); + expect(availability.isPingable(device)).toBe(false); }); it('E11-G13 should be a pingable device', () => { @@ -42,7 +41,7 @@ describe('Availability', () => { manufId: 4448, }; - assert.isTrue(availability.isPingable(device)); + expect(availability.isPingable(device)).toBe(true); }); }); }); diff --git a/test/devicePublish.test.js b/test/devicePublish.test.js index a8b4488b1..aff5b292d 100644 --- a/test/devicePublish.test.js +++ b/test/devicePublish.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const sinon = require('sinon'); const DevicePublish = require('../lib/extension/devicePublish'); const settings = require('../lib/util/settings'); @@ -46,21 +45,21 @@ describe('DevicePublish', () => { publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000001/set', JSON.stringify({brightness: '200'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000001'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 200, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000001'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 200}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000001'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 200, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000001'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 200}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); + expect(zigbee.publish.callCount).toBe(2); }); it('Should publish messages to zigbee devices', async () => { @@ -69,21 +68,21 @@ describe('DevicePublish', () => { sinon.stub(settings, 'getIeeeAddrByFriendlyName').callsFake(() => '0x00000002'); zigbee.getDevice = sinon.fake.returns({modelId: 'LCT003'}); devicePublish.onMQTTMessage('zigbee2mqtt/wohnzimmer.light.wall.right/set', JSON.stringify({state: 'ON'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000002'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'on'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000002'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000002'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('on'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000002'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); it('Should publish messages to zigbee devices when brightness is in %', async () => { @@ -91,60 +90,62 @@ describe('DevicePublish', () => { publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000003/set', JSON.stringify({brightness_percent: '92'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000003'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 235, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000003'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 235}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000003'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 235, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000003'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 235}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); - }); + expect(zigbee.publish.callCount).toBe(2); + } + ); it('Should publish messages to zigbee devices when brightness is in number', async () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000004/set', JSON.stringify({brightness: 230})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000004'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 230, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000004'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 230}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000004'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 230, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000004'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 230}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); - }); + expect(zigbee.publish.callCount).toBe(2); + } + ); it('Should publish messages to zigbee devices with color_temp', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 WS opal 980lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000005/set', JSON.stringify({color_temp: '222'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000005'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToColorTemp'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {colortemp: '222', transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000005'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToColorTemp'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({colortemp: '222', transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); + expect(zigbee.publish.callCount).toBe(2); }); it('Should publish messages to zigbee devices with color_temp in %', async () => { @@ -152,79 +153,82 @@ describe('DevicePublish', () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 WS opal 980lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000006/set', JSON.stringify({color_temp_percent: '100'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000006'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToColorTemp'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {colortemp: '500', transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.isTrue(publishEntityState.notCalled); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000006'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToColorTemp'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({colortemp: '500', transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.notCalled).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); - }); + expect(zigbee.publish.callCount).toBe(2); + } + ); it('Should publish messages to zigbee devices with non-default ep', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'lumi.ctrl_neutral1'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000007/set', JSON.stringify({state: 'OFF'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000007'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], 2); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000007'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBe(2); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); - }); + expect(zigbee.publish.callCount).toBe(1); + } + ); it('Should publish messages to zigbee devices with non-default ep and postfix', async () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'lumi.ctrl_neutral2'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000008/right/set', JSON.stringify({state: 'OFF'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000008'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], 3); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000008'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state_right: 'OFF'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000008'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBe(3); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000008'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state_right: 'OFF'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); - }); + expect(zigbee.publish.callCount).toBe(1); + } + ); it('Should publish messages to zigbee gledopto with [11,13]', async () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'GLEDOPTO', epList: [11, 13]}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000009/set', JSON.stringify({state: 'OFF'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000009'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], 11); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000009'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'OFF'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000009'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBe(11); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000009'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'OFF'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); it('Should publish messages to zigbee gledopto with [11,12,13]', async () => { @@ -232,38 +236,39 @@ describe('DevicePublish', () => { publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'GLEDOPTO', epList: [11, 12, 13]}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000010/set', JSON.stringify({state: 'OFF', brightness: 50})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000010'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], 12); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000010'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'OFF'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000010'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBe(12); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000010'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'OFF'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); - }); + expect(zigbee.publish.callCount).toBe(1); + } + ); it('Should publish messages to zigbee devices with color xy', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000011/set', JSON.stringify({color: {x: 100, y: 50}})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000011'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {colorx: 6553500, colory: 3276750, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000011'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({colorx: 6553500, colory: 3276750, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); + expect(zigbee.publish.callCount).toBe(2); }); it('Should publish messages to zigbee devices with color xy and state', async () => { @@ -272,30 +277,31 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); const payload = {color: {x: 100, y: 50}, state: 'ON'}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000012/set', JSON.stringify(payload)); - assert.strictEqual(zigbee.publish.callCount, 2); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000012'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'on'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(zigbee.publish.getCall(1).args[0], '0x00000012'); - assert.strictEqual(zigbee.publish.getCall(1).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(1).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(1).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(1).args[5], {colorx: 6553500, colory: 3276750, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(1).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(1).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000012'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(2); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000012'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('on'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(zigbee.publish.getCall(1).args[0]).toBe('0x00000012'); + expect(zigbee.publish.getCall(1).args[1]).toBe('device'); + expect(zigbee.publish.getCall(1).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(1).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(1).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(1).args[5]).toEqual({colorx: 6553500, colory: 3276750, transtime: 0}); + expect(zigbee.publish.getCall(1).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(1).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000012'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 3); - }); + expect(zigbee.publish.callCount).toBe(3); + } + ); it('Should publish messages to zigbee devices with color xy and brightness', async () => { zigbee.publish.resetHistory(); @@ -303,30 +309,31 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); const payload = {color: {x: 100, y: 50}, brightness: 20}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000013/set', JSON.stringify(payload)); - assert.strictEqual(zigbee.publish.callCount, 2); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000013'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 20, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(zigbee.publish.getCall(1).args[0], '0x00000013'); - assert.strictEqual(zigbee.publish.getCall(1).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(1).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(1).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(1).args[5], {colorx: 6553500, colory: 3276750, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(1).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(1).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000013'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 20}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(2); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000013'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 20, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(zigbee.publish.getCall(1).args[0]).toBe('0x00000013'); + expect(zigbee.publish.getCall(1).args[1]).toBe('device'); + expect(zigbee.publish.getCall(1).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(1).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(1).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(1).args[5]).toEqual({colorx: 6553500, colory: 3276750, transtime: 0}); + expect(zigbee.publish.getCall(1).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(1).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000013'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 20}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 4); - }); + expect(zigbee.publish.callCount).toBe(4); + } + ); it('Should publish messages to zigbee devices with color xy, brightness and state on', async () => { zigbee.publish.resetHistory(); @@ -334,30 +341,31 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); const payload = {color: {x: 100, y: 50}, brightness: 20, state: 'oN'}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000014/set', JSON.stringify(payload)); - assert.strictEqual(zigbee.publish.callCount, 2); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000014'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 20, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(zigbee.publish.getCall(1).args[0], '0x00000014'); - assert.strictEqual(zigbee.publish.getCall(1).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(1).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(1).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(1).args[5], {colorx: 6553500, colory: 3276750, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(1).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(1).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000014'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 20}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(2); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000014'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 20, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(zigbee.publish.getCall(1).args[0]).toBe('0x00000014'); + expect(zigbee.publish.getCall(1).args[1]).toBe('device'); + expect(zigbee.publish.getCall(1).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(1).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(1).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(1).args[5]).toEqual({colorx: 6553500, colory: 3276750, transtime: 0}); + expect(zigbee.publish.getCall(1).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(1).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000014'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 20}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 4); - }); + expect(zigbee.publish.callCount).toBe(4); + } + ); it('Should publish messages to zigbee devices with color xy, brightness and state off', async () => { zigbee.publish.resetHistory(); @@ -365,107 +373,110 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); const payload = {color: {x: 100, y: 50}, brightness: 20, state: 'oFF'}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000015/set', JSON.stringify(payload)); - assert.strictEqual(zigbee.publish.callCount, 2); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000015'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.strictEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(zigbee.publish.getCall(1).args[0], '0x00000015'); - assert.strictEqual(zigbee.publish.getCall(1).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(1).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(1).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(1).args[5], {colorx: 6553500, colory: 3276750, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(1).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(1).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000015'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'OFF'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(2); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000015'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(zigbee.publish.getCall(1).args[0]).toBe('0x00000015'); + expect(zigbee.publish.getCall(1).args[1]).toBe('device'); + expect(zigbee.publish.getCall(1).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(1).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(1).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(1).args[5]).toEqual({colorx: 6553500, colory: 3276750, transtime: 0}); + expect(zigbee.publish.getCall(1).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(1).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000015'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'OFF'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 3); - }); + expect(zigbee.publish.callCount).toBe(3); + } + ); it('Should publish messages to zigbee devices with color rgb', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000016/set', JSON.stringify({color: {r: 100, g: 200, b: 10}})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000016'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {colorx: 17085, colory: 44000, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000016'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({colorx: 17085, colory: 44000, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); + expect(zigbee.publish.callCount).toBe(2); }); it('Should publish messages to zigbee devices with color rgb string', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000017/set', JSON.stringify({color: {rgb: '100,200,10'}})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000017'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'lightingColorCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToColor'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {colorx: 17085, colory: 44000, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000017'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('lightingColorCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToColor'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({colorx: 17085, colory: 44000, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); - }); + expect(zigbee.publish.callCount).toBe(2); + } + ); it('Should publish 1 message when brightness with state is send', async () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'TRADFRI bulb E27 CWS opal 600lm'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000018/set', JSON.stringify({state: 'ON', brightness: '50'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], '0x00000018'); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'device'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 50, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], '0x00000018'); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 50}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe('0x00000018'); + expect(zigbee.publish.getCall(0).args[1]).toBe('device'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 50, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe('0x00000018'); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 50}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); - }); + expect(zigbee.publish.callCount).toBe(2); + } + ); it('Should publish messages to groups', async () => { sinon.stub(settings, 'getGroupIDByFriendlyName').callsFake(() => '1'); zigbee.publish.resetHistory(); publishEntityState.resetHistory(); devicePublish.onMQTTMessage('zigbee2mqtt/group/group_1/set', JSON.stringify({state: 'ON'})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], 1); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'group'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'on'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], 1); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe(1); + expect(zigbee.publish.getCall(0).args[1]).toBe('group'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('on'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe(1); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); it('Should publish messages to groups with brightness_percent', async () => { @@ -473,21 +484,21 @@ describe('DevicePublish', () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); devicePublish.onMQTTMessage('zigbee2mqtt/group/group_1/set', JSON.stringify({brightness_percent: 50})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], 1); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'group'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 127, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], 1); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 127}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe(1); + expect(zigbee.publish.getCall(0).args[1]).toBe('group'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 127, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe(1); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 127}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); it('Should publish messages to groups with on and brightness', async () => { @@ -495,21 +506,21 @@ describe('DevicePublish', () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); devicePublish.onMQTTMessage('zigbee2mqtt/group/group_1/set', JSON.stringify({state: 'ON', brightness: 50})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], 1); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'group'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'moveToLevelWithOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {level: 50, transtime: 0}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], 1); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'ON', brightness: 50}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe(1); + expect(zigbee.publish.getCall(0).args[1]).toBe('group'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genLevelCtrl'); + expect(zigbee.publish.getCall(0).args[3]).toBe('moveToLevelWithOnOff'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({level: 50, transtime: 0}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe(1); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'ON', brightness: 50}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); it('Should publish messages to groups with off and brightness', async () => { @@ -517,21 +528,21 @@ describe('DevicePublish', () => { zigbee.publish.resetHistory(); publishEntityState.resetHistory(); devicePublish.onMQTTMessage('zigbee2mqtt/group/group_1/set', JSON.stringify({state: 'OFF', brightness: 5})); - assert.strictEqual(zigbee.publish.callCount, 1); - assert.strictEqual(zigbee.publish.getCall(0).args[0], 1); - assert.strictEqual(zigbee.publish.getCall(0).args[1], 'group'); - assert.strictEqual(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.strictEqual(zigbee.publish.getCall(0).args[3], 'off'); - assert.strictEqual(zigbee.publish.getCall(0).args[4], 'functional'); - assert.deepEqual(zigbee.publish.getCall(0).args[5], {}); - assert.deepEqual(zigbee.publish.getCall(0).args[6], cfg.default); - assert.deepEqual(zigbee.publish.getCall(0).args[7], null); - assert.strictEqual(publishEntityState.callCount, 1); - assert.strictEqual(publishEntityState.getCall(0).args[0], 1); - assert.deepEqual(publishEntityState.getCall(0).args[1], {state: 'OFF'}); - assert.strictEqual(publishEntityState.getCall(0).args[2], true); + expect(zigbee.publish.callCount).toBe(1); + expect(zigbee.publish.getCall(0).args[0]).toBe(1); + expect(zigbee.publish.getCall(0).args[1]).toBe('group'); + expect(zigbee.publish.getCall(0).args[2]).toBe('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toBe('off'); + expect(zigbee.publish.getCall(0).args[4]).toBe('functional'); + expect(zigbee.publish.getCall(0).args[5]).toEqual({}); + expect(zigbee.publish.getCall(0).args[6]).toEqual(cfg.default); + expect(zigbee.publish.getCall(0).args[7]).toBeNull(); + expect(publishEntityState.callCount).toBe(1); + expect(publishEntityState.getCall(0).args[0]).toBe(1); + expect(publishEntityState.getCall(0).args[1]).toEqual({state: 'OFF'}); + expect(publishEntityState.getCall(0).args[2]).toBe(true); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 1); + expect(zigbee.publish.callCount).toBe(1); }); }); @@ -539,47 +550,47 @@ describe('DevicePublish', () => { it('Should handle non-valid topics', () => { const topic = 'zigbee2mqtt1/my_device_id/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed, null); + expect(parsed).toBeNull(); }); it('Should handle non-valid topics', () => { const topic = 'zigbee2mqtt1/my_device_id/sett'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed, null); + expect(parsed).toBeNull(); }); it('Should handle non-valid topics', () => { const topic = 'zigbee2mqtt/my_device_id/write'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed, null); + expect(parsed).toBeNull(); }); it('Should handle non-valid topics', () => { const topic = 'zigbee2mqtt/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed, null); + expect(parsed).toBeNull(); }); it('Should handle non-valid topics', () => { const topic = 'set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed, null); + expect(parsed).toBeNull(); }); it('Should parse set topic', () => { const topic = 'zigbee2mqtt/my_device_id/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, 'my_device_id'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('my_device_id'); + expect(parsed.postfix).toBe(''); }); it('Should parse get topic', () => { const topic = 'zigbee2mqtt/my_device_id2/get'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'get'); - assert.strictEqual(parsed.ID, 'my_device_id2'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('get'); + expect(parsed.ID).toBe('my_device_id2'); + expect(parsed.postfix).toBe(''); }); it('Should parse topic with when base topic has multiple slashes', () => { @@ -593,17 +604,17 @@ describe('DevicePublish', () => { const topic = 'zigbee2mqtt/at/my/home/my_device_id2/get'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'get'); - assert.strictEqual(parsed.ID, 'my_device_id2'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('get'); + expect(parsed.ID).toBe('my_device_id2'); + expect(parsed.postfix).toBe(''); }); it('Should parse topic with when deviceID has multiple slashes', () => { const topic = 'zigbee2mqtt/floor0/basement/my_device_id2/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, 'floor0/basement/my_device_id2'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('floor0/basement/my_device_id2'); + expect(parsed.postfix).toBe(''); }); it('Should parse topic with when base and deviceID have multiple slashes', () => { @@ -617,57 +628,58 @@ describe('DevicePublish', () => { const topic = 'zigbee2mqtt/at/my/basement/floor0/basement/my_device_id2/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, 'floor0/basement/my_device_id2'); - assert.strictEqual(parsed.postfix, ''); - }); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('floor0/basement/my_device_id2'); + expect(parsed.postfix).toBe(''); + } + ); it('Should parse set with ieeAddr topic', () => { const topic = 'zigbee2mqtt/0x12345689/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, '0x12345689'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('0x12345689'); + expect(parsed.postfix).toBe(''); }); it('Should parse set with postfix topic', () => { const topic = 'zigbee2mqtt/0x12345689/left/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, '0x12345689'); - assert.strictEqual(parsed.postfix, 'left'); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('0x12345689'); + expect(parsed.postfix).toBe('left'); }); it('Should parse set with almost postfix topic', () => { const topic = 'zigbee2mqtt/wohnzimmer.light.wall.right/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, 'wohnzimmer.light.wall.right'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('wohnzimmer.light.wall.right'); + expect(parsed.postfix).toBe(''); }); it('Should parse set with postfix topic', () => { const topic = 'zigbee2mqtt/0x12345689/right/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, '0x12345689'); - assert.strictEqual(parsed.postfix, 'right'); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('0x12345689'); + expect(parsed.postfix).toBe('right'); }); it('Should parse set with postfix topic', () => { const topic = 'zigbee2mqtt/0x12345689/bottom_left/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, '0x12345689'); - assert.strictEqual(parsed.postfix, 'bottom_left'); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('0x12345689'); + expect(parsed.postfix).toBe('bottom_left'); }); it('Shouldnt parse set with invalid postfix topic', () => { const topic = 'zigbee2mqtt/0x12345689/invalid/set'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'set'); - assert.strictEqual(parsed.ID, '0x12345689/invalid'); - assert.strictEqual(parsed.postfix, ''); + expect(parsed.type).toBe('set'); + expect(parsed.ID).toBe('0x12345689/invalid'); + expect(parsed.postfix).toBe(''); }); it('Should parse set with and slashes in base and deviceID postfix topic', () => { @@ -681,10 +693,11 @@ describe('DevicePublish', () => { const topic = 'zigbee2mqtt/at/my/home/my/device/in/basement/sensor/bottom_left/get'; const parsed = devicePublish.parseTopic(topic); - assert.strictEqual(parsed.type, 'get'); - assert.strictEqual(parsed.ID, 'my/device/in/basement/sensor'); - assert.strictEqual(parsed.postfix, 'bottom_left'); - }); + expect(parsed.type).toBe('get'); + expect(parsed.ID).toBe('my/device/in/basement/sensor'); + expect(parsed.postfix).toBe('bottom_left'); + } + ); }); it('Should not publish messages to zigbee devices when payload is invalid', async () => { @@ -692,26 +705,27 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'lumi.ctrl_neutral1'}); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000019/set', JSON.stringify({state: true})); await wait(10); - assert.isTrue(zigbee.publish.notCalled); + expect(zigbee.publish.notCalled).toBe(true); devicePublish.onMQTTMessage('zigbee2mqtt/0x00000019/set', JSON.stringify({state: 1})); await wait(10); - assert.isTrue(zigbee.publish.notCalled); - }); + expect(zigbee.publish.notCalled).toBe(true); + } + ); it('Should set state before color', async () => { zigbee.publish.resetHistory(); zigbee.getDevice = sinon.fake.returns({modelId: 'LCT001'}); const msg = {'state': 'ON', 'color': {'x': 0.701, 'y': 0.299}}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000020/set', JSON.stringify(msg)); - assert.equal(zigbee.publish.callCount, 2); - assert.equal(zigbee.publish.getCall(0).args[2], 'genOnOff'); - assert.equal(zigbee.publish.getCall(0).args[3], 'on'); - assert.equal(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); - assert.equal(zigbee.publish.getCall(1).args[3], 'moveToColor'); + expect(zigbee.publish.callCount).toEqual(2); + expect(zigbee.publish.getCall(0).args[2]).toEqual('genOnOff'); + expect(zigbee.publish.getCall(0).args[3]).toEqual('on'); + expect(zigbee.publish.getCall(1).args[2]).toEqual('lightingColorCtrl'); + expect(zigbee.publish.getCall(1).args[3]).toEqual('moveToColor'); await wait(10); - assert.equal(zigbee.publish.callCount, 3); - assert.equal(zigbee.publish.getCall(2).args[2], 'lightingColorCtrl'); - assert.equal(zigbee.publish.getCall(2).args[3], 'read'); + expect(zigbee.publish.callCount).toEqual(3); + expect(zigbee.publish.getCall(2).args[2]).toEqual('lightingColorCtrl'); + expect(zigbee.publish.getCall(2).args[3]).toEqual('read'); }); it('Should set state with brightness before color', async () => { @@ -719,10 +733,10 @@ describe('DevicePublish', () => { zigbee.getDevice = sinon.fake.returns({modelId: 'LCT001'}); const msg = {'state': 'ON', 'color': {'x': 0.701, 'y': 0.299}, 'transition': 3, 'brightness': 100}; devicePublish.onMQTTMessage('zigbee2mqtt/0x00000021/set', JSON.stringify(msg)); - assert.strictEqual(zigbee.publish.callCount, 2); - assert.equal(zigbee.publish.getCall(0).args[2], 'genLevelCtrl'); - assert.equal(zigbee.publish.getCall(1).args[2], 'lightingColorCtrl'); + expect(zigbee.publish.callCount).toBe(2); + expect(zigbee.publish.getCall(0).args[2]).toEqual('genLevelCtrl'); + expect(zigbee.publish.getCall(1).args[2]).toEqual('lightingColorCtrl'); await wait(10); - assert.strictEqual(zigbee.publish.callCount, 2); + expect(zigbee.publish.callCount).toBe(2); }); }); diff --git a/test/deviceReceive.test.js b/test/deviceReceive.test.js index b25a8a8bd..348428226 100644 --- a/test/deviceReceive.test.js +++ b/test/deviceReceive.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const sinon = require('sinon'); const DeviceReceive = require('../lib/extension/deviceReceive'); const settings = require('../lib/util/settings'); @@ -35,24 +34,24 @@ describe('DeviceReceive', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genOnOff', 'attReport', {onOff: 1}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {click: 'single'}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({click: 'single'}); }); it('Should handle a zigbee message which uses ep (left)', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genOnOff', 'attReport', {onOff: 1}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {click: 'left'}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({click: 'left'}); }); it('Should handle a zigbee message which uses ep (right)', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genOnOff', 'attReport', {onOff: 1}, 2); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {click: 'right'}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({click: 'right'}); }); it('Should handle a zigbee message with default precision', () => { @@ -61,8 +60,8 @@ describe('DeviceReceive', () => { device, 'msTemperatureMeasurement', 'attReport', {measuredValue: -85}, 1 ); deviceReceive.onZigbeeMessage(message, device, WSDCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {temperature: -0.85}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({temperature: -0.85}); }); it('Should handle a zigbee message with 1 precision', () => { @@ -74,8 +73,8 @@ describe('DeviceReceive', () => { device, 'msTemperatureMeasurement', 'attReport', {measuredValue: -85}, 1 ); deviceReceive.onZigbeeMessage(message, device, WSDCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {temperature: -0.8}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({temperature: -0.8}); }); it('Should handle a zigbee message with 0 precision', () => { @@ -87,8 +86,8 @@ describe('DeviceReceive', () => { device, 'msTemperatureMeasurement', 'attReport', {measuredValue: -85}, 1 ); deviceReceive.onZigbeeMessage(message, device, WSDCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {temperature: -1}); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({temperature: -1}); }); it('Should handle a zigbee message with 1 precision when set via device_options', () => { @@ -110,9 +109,10 @@ describe('DeviceReceive', () => { device, 'msTemperatureMeasurement', 'attReport', {measuredValue: -85}, 1 ); deviceReceive.onZigbeeMessage(message, device, WSDCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {temperature: -0.8}); - }); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({temperature: -0.8}); + } + ); it('Should handle a zigbee message with 2 precision when overrides device_options', () => { const device = {ieeeAddr: '0x12345678'}; @@ -135,44 +135,45 @@ describe('DeviceReceive', () => { device, 'msTemperatureMeasurement', 'attReport', {measuredValue: -85}, 1 ); deviceReceive.onZigbeeMessage(message, device, WSDCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); - assert.deepEqual(publishEntityState.getCall(0).args[1], {temperature: -0.85}); - }); + expect(publishEntityState.calledOnce).toBe(true); + expect(publishEntityState.getCall(0).args[1]).toEqual({temperature: -0.85}); + } + ); it('Should handle a zigbee message with voltage 3010', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', {'65281': {'1': 3010}}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); + expect(publishEntityState.calledOnce).toBe(true); const expected = {battery: 100, voltage: 3010}; - assert.deepEqual(publishEntityState.getCall(0).args[1], expected); + expect(publishEntityState.getCall(0).args[1]).toEqual(expected); }); it('Should handle a zigbee message with voltage 2850', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', {'65281': {'1': 2850}}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); + expect(publishEntityState.calledOnce).toBe(true); const expected = {battery: 35, voltage: 2850}; - assert.deepEqual(publishEntityState.getCall(0).args[1], expected); + expect(publishEntityState.getCall(0).args[1]).toEqual(expected); }); it('Should handle a zigbee message with voltage 2650', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', {'65281': {'1': 2650}}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); + expect(publishEntityState.calledOnce).toBe(true); const expected = {battery: 14, voltage: 2650}; - assert.deepEqual(publishEntityState.getCall(0).args[1], expected); + expect(publishEntityState.getCall(0).args[1]).toEqual(expected); }); it('Should handle a zigbee message with voltage 2000', () => { const device = {ieeeAddr: '0x12345678'}; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', {'65281': {'1': 2000}}, 1); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); + expect(publishEntityState.calledOnce).toBe(true); const expected = {battery: 0, voltage: 2000}; - assert.deepEqual(publishEntityState.getCall(0).args[1], expected); + expect(publishEntityState.getCall(0).args[1]).toEqual(expected); }); it('Should publish 1 message when converted twice', () => { @@ -182,9 +183,9 @@ describe('DeviceReceive', () => { }; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', payload, 1); deviceReceive.onZigbeeMessage(message, device, RTCGQ11LM); - assert.isTrue(publishEntityState.calledOnce); + expect(publishEntityState.calledOnce).toBe(true); const expected = {'battery': 100, 'illuminance': 381, 'voltage': 3045}; - assert.deepEqual(publishEntityState.getCall(0).args[1], expected); + expect(publishEntityState.getCall(0).args[1]).toEqual(expected); }); it('Should publish no message when converted without result', () => { @@ -192,7 +193,7 @@ describe('DeviceReceive', () => { const payload = {'9999': {'1': 3045}}; const message = utils.zigbeeMessage(device, 'genBasic', 'attReport', payload, 1); deviceReceive.onZigbeeMessage(message, device, RTCGQ11LM); - assert.isTrue(publishEntityState.notCalled); + expect(publishEntityState.notCalled).toBe(true); }); it('Should publish last_seen epoch', () => { @@ -206,8 +207,8 @@ describe('DeviceReceive', () => { }; }); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); - assert.equal(typeof publishEntityState.getCall(0).args[1].last_seen, 'number'); + expect(publishEntityState.calledOnce).toBe(true); + expect(typeof publishEntityState.getCall(0).args[1].last_seen).toEqual('number'); }); it('Should publish last_seen ISO_8601', () => { @@ -221,8 +222,8 @@ describe('DeviceReceive', () => { }; }); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); - assert.equal(typeof publishEntityState.getCall(0).args[1].last_seen, 'string'); + expect(publishEntityState.calledOnce).toBe(true); + expect(typeof publishEntityState.getCall(0).args[1].last_seen).toEqual('string'); }); it('Should publish last_seen ISO_8601_local', () => { @@ -236,8 +237,8 @@ describe('DeviceReceive', () => { }; }); deviceReceive.onZigbeeMessage(message, device, WXKG02LM); - assert.isTrue(publishEntityState.calledOnce); - assert.equal(typeof publishEntityState.getCall(0).args[1].last_seen, 'string'); + expect(publishEntityState.calledOnce).toBe(true); + expect(typeof publishEntityState.getCall(0).args[1].last_seen).toEqual('string'); }); }); }); diff --git a/test/homeassistant.test.js b/test/homeassistant.test.js index 9423dd5f7..1ffc2b9de 100644 --- a/test/homeassistant.test.js +++ b/test/homeassistant.test.js @@ -1,6 +1,5 @@ const devices = require('zigbee-shepherd-converters').devices; const HomeassistantExtension = require('../lib/extension/homeassistant'); -const assert = require('chai').assert; const sinon = require('sinon'); const settings = require('../lib/util/settings'); @@ -33,8 +32,9 @@ describe('HomeAssistant extension', () => { } }); - assert.strictEqual(missing.length, 0, `Missing HomeAssistant mapping for: ${missing.join(', ')}`); - }); + expect(missing).toHaveLength(0); + } + ); it('Should discover devices', () => { let payload = null; @@ -43,7 +43,7 @@ describe('HomeAssistant extension', () => { }); homeassistant.discover('0x12345678', WSDCGQ11LM, false); - assert.equal(mqtt.publish.callCount, 5); + expect(mqtt.publish.callCount).toEqual(5); // 1 payload = { @@ -64,10 +64,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(0).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(0).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(0).args[3], null); - assert.equal(mqtt.publish.getCall(0).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(0).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(0).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(0).args[3]).toBeNull(); + expect(mqtt.publish.getCall(0).args[4]).toEqual('homeassistant'); // 2 payload = { @@ -88,10 +88,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(1).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(1).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(1).args[3], null); - assert.equal(mqtt.publish.getCall(1).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(1).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(1).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(1).args[3]).toBeNull(); + expect(mqtt.publish.getCall(1).args[4]).toEqual('homeassistant'); // 3 payload = { @@ -112,10 +112,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(2).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(2).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(2).args[3], null); - assert.equal(mqtt.publish.getCall(2).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(2).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(2).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(2).args[3]).toBeNull(); + expect(mqtt.publish.getCall(2).args[4]).toEqual('homeassistant'); // 4 payload = { @@ -136,10 +136,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(3).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(3).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(3).args[3], null); - assert.equal(mqtt.publish.getCall(3).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(3).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(3).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(3).args[3]).toBeNull(); + expect(mqtt.publish.getCall(3).args[4]).toEqual('homeassistant'); // 5 payload = { @@ -159,10 +159,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(4).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(4).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(4).args[3], null); - assert.equal(mqtt.publish.getCall(4).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(4).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(4).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(4).args[3]).toBeNull(); + expect(mqtt.publish.getCall(4).args[4]).toEqual('homeassistant'); }); it('Should discover devices with precision', () => { @@ -177,7 +177,7 @@ describe('HomeAssistant extension', () => { }); homeassistant.discover('0x12345678', WSDCGQ11LM, false); - assert.equal(mqtt.publish.callCount, 5); + expect(mqtt.publish.callCount).toEqual(5); // 1 payload = { @@ -198,10 +198,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(0).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(0).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(0).args[3], null); - assert.equal(mqtt.publish.getCall(0).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(0).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(0).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(0).args[3]).toBeNull(); + expect(mqtt.publish.getCall(0).args[4]).toEqual('homeassistant'); // 2 payload = { @@ -222,10 +222,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(1).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(1).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(1).args[3], null); - assert.equal(mqtt.publish.getCall(1).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(1).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(1).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(1).args[3]).toBeNull(); + expect(mqtt.publish.getCall(1).args[4]).toEqual('homeassistant'); // 3 payload = { @@ -246,10 +246,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(2).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(2).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(2).args[3], null); - assert.equal(mqtt.publish.getCall(2).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(2).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(2).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(2).args[3]).toBeNull(); + expect(mqtt.publish.getCall(2).args[4]).toEqual('homeassistant'); // 4 payload = { @@ -270,10 +270,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(3).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(3).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(3).args[3], null); - assert.equal(mqtt.publish.getCall(3).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(3).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(3).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(3).args[3]).toBeNull(); + expect(mqtt.publish.getCall(3).args[4]).toEqual('homeassistant'); // 5 payload = { @@ -293,10 +293,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(4).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(4).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(4).args[3], null); - assert.equal(mqtt.publish.getCall(4).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(4).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(4).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(4).args[3]).toBeNull(); + expect(mqtt.publish.getCall(4).args[4]).toEqual('homeassistant'); }); it('Should discover devices with overriden user configuration', () => { @@ -315,7 +315,7 @@ describe('HomeAssistant extension', () => { }); homeassistant.discover('0x12345678', WSDCGQ11LM, false); - assert.equal(mqtt.publish.callCount, 5); + expect(mqtt.publish.callCount).toEqual(5); // 1 payload = { @@ -338,10 +338,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(0).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(0).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(0).args[3], null); - assert.equal(mqtt.publish.getCall(0).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(0).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(0).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(0).args[3]).toBeNull(); + expect(mqtt.publish.getCall(0).args[4]).toEqual('homeassistant'); // 2 payload = { @@ -364,10 +364,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(1).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(1).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(1).args[3], null); - assert.equal(mqtt.publish.getCall(1).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(1).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(1).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(1).args[3]).toBeNull(); + expect(mqtt.publish.getCall(1).args[4]).toEqual('homeassistant'); // 3 payload = { @@ -390,10 +390,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(2).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(2).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(2).args[3], null); - assert.equal(mqtt.publish.getCall(2).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(2).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(2).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(2).args[3]).toBeNull(); + expect(mqtt.publish.getCall(2).args[4]).toEqual('homeassistant'); // 4 payload = { @@ -416,10 +416,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(3).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(3).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(3).args[3], null); - assert.equal(mqtt.publish.getCall(3).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(3).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(3).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(3).args[3]).toBeNull(); + expect(mqtt.publish.getCall(3).args[4]).toEqual('homeassistant'); // 5 payload = { @@ -441,10 +441,10 @@ describe('HomeAssistant extension', () => { 'availability_topic': 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(4).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(4).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(4).args[3], null); - assert.equal(mqtt.publish.getCall(4).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(4).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(4).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(4).args[3]).toBeNull(); + expect(mqtt.publish.getCall(4).args[4]).toEqual('homeassistant'); }); it('Should discover devices with cover_position', () => { @@ -454,7 +454,7 @@ describe('HomeAssistant extension', () => { }); homeassistant.discover('0x12345678', SV01, false); - assert.equal(mqtt.publish.callCount, 5); + expect(mqtt.publish.callCount).toEqual(5); // 1 payload = { @@ -475,9 +475,9 @@ describe('HomeAssistant extension', () => { availability_topic: 'zigbee2mqtt/bridge/state', }; - assert.deepEqual(JSON.parse(mqtt.publish.getCall(0).args[1]), payload); - assert.deepEqual(mqtt.publish.getCall(0).args[2], {retain: true, qos: 0}); - assert.equal(mqtt.publish.getCall(0).args[3], null); - assert.equal(mqtt.publish.getCall(0).args[4], 'homeassistant'); + expect(JSON.parse(mqtt.publish.getCall(0).args[1])).toEqual(payload); + expect(mqtt.publish.getCall(0).args[2]).toEqual({retain: true, qos: 0}); + expect(mqtt.publish.getCall(0).args[3]).toBeNull(); + expect(mqtt.publish.getCall(0).args[4]).toEqual('homeassistant'); }); }); diff --git a/test/settings.test.js b/test/settings.test.js index 5a717c9c8..3e2a4bf2e 100644 --- a/test/settings.test.js +++ b/test/settings.test.js @@ -1,4 +1,3 @@ -const assert = require('chai').assert; const sinon = require('sinon'); const objectAssignDeep = require('object-assign-deep'); @@ -16,8 +15,8 @@ describe('Settings', () => { const read = (file) => fs.readYaml(file); const files = new Map(); - // eslint-disable-next-line no-undef - (typeof jest === 'undefined' ? before : beforeAll)(()=>{ + + beforeAll(() => { sinon.stub(fs, 'readYaml').callsFake((file) => { if (files.has(file)) return objectAssignDeep.noMutate(files.get(file)); throw new Error(`Fake file not found: ${file}`); @@ -36,8 +35,7 @@ describe('Settings', () => { files.clear(); }); - // eslint-disable-next-line no-undef - (typeof jest === 'undefined' ? after : afterAll)(() => { + afterAll(() => { fs.readYaml.restore(); fs.readYamlIfExists.restore(); fs.writeYaml.restore(); @@ -47,7 +45,7 @@ describe('Settings', () => { it('Should return default settings', () => { write(configurationFile, {}); const s = settings.get(); - assert.deepEqual(s, settings._getDefaults()); + expect(s).toEqual(settings._getDefaults()); }); it('Should return settings', () => { @@ -55,7 +53,7 @@ describe('Settings', () => { const s = settings.get(); const expected = settings._getDefaults(); expected.permit_join = true; - assert.deepEqual(s, expected); + expect(s).toEqual(expected); }); it('Should add devices', () => { @@ -72,7 +70,7 @@ describe('Settings', () => { }, }; - assert.deepEqual(actual, expected); + expect(actual).toEqual(expected); }); it('Should read devices', () => { @@ -93,7 +91,7 @@ describe('Settings', () => { retain: false, }; - assert.deepEqual(device, expected); + expect(device).toEqual(expected); }); it('Should read devices form a separate file', () => { @@ -117,7 +115,7 @@ describe('Settings', () => { retain: false, }; - assert.deepEqual(device, expected); + expect(device).toEqual(expected); }); it('Should add devices to a separate file', () => { @@ -137,7 +135,7 @@ describe('Settings', () => { settings.addDevice('0x1234'); - assert.deepEqual(read(configurationFile), {devices: 'devices.yaml'}); + expect(read(configurationFile)).toEqual({devices: 'devices.yaml'}); const expected = { '0x12345678': { @@ -150,7 +148,7 @@ describe('Settings', () => { }, }; - assert.deepEqual(read(devicesFile), expected); + expect(read(devicesFile)).toEqual(expected); }); it('Should add devices to a separate file if devices.yaml doesnt exist', () => { @@ -162,7 +160,7 @@ describe('Settings', () => { settings.addDevice('0x1234'); - assert.deepEqual(read(configurationFile), {devices: 'devices.yaml'}); + expect(read(configurationFile)).toEqual({devices: 'devices.yaml'}); const expected = { '0x1234': { @@ -171,8 +169,9 @@ describe('Settings', () => { }, }; - assert.deepEqual(read(devicesFile), expected); - }); + expect(read(devicesFile)).toEqual(expected); + } + ); it('Should add and remove devices to a separate file if devices.yaml doesnt exist', () => { const contentConfiguration = { @@ -182,13 +181,14 @@ describe('Settings', () => { write(configurationFile, contentConfiguration); settings.addDevice('0x1234'); - assert.deepEqual(read(configurationFile), {devices: 'devices.yaml'}); + expect(read(configurationFile)).toEqual({devices: 'devices.yaml'}); settings.removeDevice('0x1234'); - assert.deepEqual(read(configurationFile), {devices: 'devices.yaml'}); + expect(read(configurationFile)).toEqual({devices: 'devices.yaml'}); - assert.deepEqual(read(devicesFile), {}); - }); + expect(read(devicesFile)).toEqual({}); + } + ); it('Should read groups', () => { const content = { @@ -206,7 +206,7 @@ describe('Settings', () => { friendly_name: '123', }; - assert.deepEqual(group, expected); + expect(group).toEqual(expected); }); it('Should read groups form a separate file', () => { @@ -228,7 +228,7 @@ describe('Settings', () => { friendly_name: '123', }; - assert.deepEqual(group, expected); + expect(group).toEqual(expected); }); it('Combine everything! groups and devices from separate file :)', () => { @@ -251,11 +251,11 @@ describe('Settings', () => { groups: 'groups.yaml', }; - assert.deepEqual(read(configurationFile), expectedConfiguration); + expect(read(configurationFile)).toEqual(expectedConfiguration); settings.addDevice('0x1234'); - assert.deepEqual(read(configurationFile), expectedConfiguration); + expect(read(configurationFile)).toEqual(expectedConfiguration); const expectedDevice = { '0x1234': { @@ -264,23 +264,23 @@ describe('Settings', () => { }, }; - assert.deepEqual(read(devicesFile), expectedDevice); + expect(read(devicesFile)).toEqual(expectedDevice); const group = settings.getGroup('1'); const expectedGroup = { friendly_name: '123', }; - assert.deepEqual(group, expectedGroup); + expect(group).toEqual(expectedGroup); - assert.deepEqual(read(configurationFile), expectedConfiguration); + expect(read(configurationFile)).toEqual(expectedConfiguration); const expectedDevice2 = { friendly_name: '0x1234', retain: false, }; - assert.deepEqual(settings.getDevice('0x1234'), expectedDevice2); + expect(settings.getDevice('0x1234')).toEqual(expectedDevice2); }); }); });