From 1855c3b4a59b785a6b1f89e69b0b54a11bca2ef6 Mon Sep 17 00:00:00 2001 From: Christoffer Sandberg Date: Tue, 8 Nov 2022 17:33:28 +0100 Subject: [PATCH] Add test cases for BusHelper.removeListeners --- test/BusHelper.spec.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/BusHelper.spec.js b/test/BusHelper.spec.js index 8e594f3..fbf0da9 100644 --- a/test/BusHelper.spec.js +++ b/test/BusHelper.spec.js @@ -125,3 +125,31 @@ test('propsEvents', async () => { await helper.set('VirtualProperty', buildTypedValue('string', 'bar')) await expect(res).resolves.toMatchObject({ VirtualProperty: { signature: 's', value: 'bar' } }) }) + +test('removeListeners', async () => { + const helper = new BusHelper(dbus, TEST_NAME, TEST_OBJECT, TEST_IFACE, { useProps: true, usePropsEvents: true }) + + const dummyCb = () => {} + + // Init with listener on helper (directly attached dummyCb) and _propsProxy (through method call triggered _prepare) + helper.on('PropertiesChanged', dummyCb) + await helper.callMethod('Echo', 'ping') + expect(helper.listenerCount('PropertiesChanged')).toBeGreaterThan(0) + expect(helper._propsProxy.listenerCount('PropertiesChanged')).toBeGreaterThan(0) + + // Test remove + helper.removeListeners() + expect(helper.listenerCount('PropertiesChanged')).toBe(0) + expect(helper._propsProxy.listenerCount('PropertiesChanged')).toBe(0) + + // Test reuse after remove (same initialization as before) + helper.on('PropertiesChanged', dummyCb) + await helper.callMethod('Echo', 'ping') + expect(helper.listenerCount('PropertiesChanged')).toBeGreaterThan(0) + expect(helper._propsProxy.listenerCount('PropertiesChanged')).toBeGreaterThan(0) + + // Remove second time + helper.removeListeners() + expect(helper.listenerCount('PropertiesChanged')).toBe(0) + expect(helper._propsProxy.listenerCount('PropertiesChanged')).toBe(0) +})