From ad59ff57bc14c1d791d48b9d0911dd220445a0a1 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Sat, 22 Feb 2020 15:45:56 +0100 Subject: [PATCH] Also remove group from herdsman on remove. #2265 --- lib/extension/bridgeConfig.js | 5 ++++- test/bridgeConfig.test.js | 5 +++-- test/stub/zigbeeHerdsman.js | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/extension/bridgeConfig.js b/lib/extension/bridgeConfig.js index b76467e3d..61b1337f0 100644 --- a/lib/extension/bridgeConfig.js +++ b/lib/extension/bridgeConfig.js @@ -253,7 +253,10 @@ class BridgeConfig extends BaseExtension { removeGroup(topic, message) { const name = message; - settings.removeGroup(name); + const entity = this.zigbee.resolveEntity(message); + assert(entity && entity.type === 'group', `Group '${message}' does not exist`); + settings.removeGroup(message); + entity.group.removeFromDatabase(); logger.info(`Removed group '${name}'`); } diff --git a/test/bridgeConfig.test.js b/test/bridgeConfig.test.js index 6cf63c5c5..42834e354 100644 --- a/test/bridgeConfig.test.js +++ b/test/bridgeConfig.test.js @@ -267,10 +267,11 @@ describe('Bridge config', () => { }); it('Should allow to remove groups', async () => { - settings.addGroup('to_be_removed') - MQTT.events.message('zigbee2mqtt/bridge/config/remove_group', 'to_be_removed'); + const group = zigbeeHerdsman.groups.group_1; + MQTT.events.message('zigbee2mqtt/bridge/config/remove_group', 'group_1'); await flushPromises(); expect(settings.getGroup('to_be_removed')).toStrictEqual(null); + expect(group.removeFromDatabase).toHaveBeenCalledTimes(1); }); it('Shouldnt allow add groups without id or friendly_name in json', async () => { diff --git a/test/stub/zigbeeHerdsman.js b/test/stub/zigbeeHerdsman.js index 765413e46..97a08f945 100644 --- a/test/stub/zigbeeHerdsman.js +++ b/test/stub/zigbeeHerdsman.js @@ -7,6 +7,7 @@ class Group { this.command = jest.fn(); this.meta = {}; this.members = members; + this.removeFromDatabase = jest.fn(); this.hasMember = (endpoint) => this.members.includes(endpoint); } }