Skip to content

Commit f794511

Browse files
authored
Fix group membership handling. (#56)
1 parent 65f65fb commit f794511

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

tests/test_application.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,13 @@ async def test_conbee_dev_add_to_group(app, nwk):
317317
app._groups.add_group.return_value = group
318318

319319
conbee = application.ConBeeDevice(app, mock.sentinel.ieee, nwk)
320+
conbee.endpoints = {0: mock.sentinel.zdo,
321+
1: mock.sentinel.ep1,
322+
2: mock.sentinel.ep2
323+
}
320324

321325
await conbee.add_to_group(mock.sentinel.grp_id, mock.sentinel.grp_name)
322-
assert group.add_member.call_count == 1
326+
assert group.add_member.call_count == 2
323327

324328
assert app.groups.add_group.call_count == 1
325329
assert app.groups.add_group.call_args[0][0] is mock.sentinel.grp_id
@@ -332,9 +336,13 @@ async def test_conbee_dev_remove_from_group(app, nwk):
332336
app.groups[mock.sentinel.grp_id] = group
333337
conbee = application.ConBeeDevice(app,
334338
mock.sentinel.ieee, nwk)
339+
conbee.endpoints = {0: mock.sentinel.zdo,
340+
1: mock.sentinel.ep1,
341+
2: mock.sentinel.ep2
342+
}
335343

336344
await conbee.remove_from_group(mock.sentinel.grp_id)
337-
assert group.remove_member.call_count == 1
345+
assert group.remove_member.call_count == 2
338346

339347

340348
def test_conbee_props(nwk):
@@ -355,7 +363,11 @@ async def test_conbee_new(app, nwk, monkeypatch):
355363
assert mock_init.call_count == 1
356364
mock_init.reset_mock()
357365

358-
app.devices[mock.sentinel.ieee] = mock.MagicMock()
366+
mock_dev = mock.MagicMock()
367+
mock_dev.endpoints = {0: mock.MagicMock(),
368+
1: mock.MagicMock(),
369+
22: mock.MagicMock()}
370+
app.devices[mock.sentinel.ieee] = mock_dev
359371
conbee = await application.ConBeeDevice.new(app, mock.sentinel.ieee, nwk)
360372
assert isinstance(conbee, zigpy_deconz.zigbee.application.ConBeeDevice)
361373
assert mock_init.call_count == 0

zigpy_deconz/zigbee/application.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -294,12 +294,19 @@ class ConBeeDevice(zigpy.device.Device):
294294
async def add_to_group(self, grp_id: int,
295295
name: str = None) -> None:
296296
group = self.application.groups.add_group(grp_id, name)
297-
group.add_member(self)
298-
return
297+
298+
for epid in self.endpoints:
299+
if not epid:
300+
continue # skip ZDO
301+
group.add_member(self.endpoints[epid])
302+
return [0]
299303

300304
async def remove_from_group(self, grp_id: int) -> None:
301-
self.application.groups[grp_id].remove_member(self)
302-
return
305+
for epid in self.endpoints:
306+
if not epid:
307+
continue # skip ZDO
308+
self.application.groups[grp_id].remove_member(self.endpoints[epid])
309+
return [0]
303310

304311
@property
305312
def manufacturer(self):

0 commit comments

Comments
 (0)