diff --git a/test/controller.test.js b/test/controller.test.js index 5660ca0ca..208c17a7c 100644 --- a/test/controller.test.js +++ b/test/controller.test.js @@ -326,47 +326,28 @@ describe('Controller', () => { }); it('Handle mqtt message', async () => { - class DummyTransport extends Transport { - log(info, callback) {} - } - const transport = new DummyTransport(); - logger.setTransportsEnabled(true); - let spyTransport = jest.spyOn(transport, 'log').mockImplementation(); - logger.addTransport(transport); + const eventbus = controller.eventBus; + let spyEventbusEmitMQTTMessage = jest.spyOn(eventbus, 'emitMQTTMessage').mockImplementation(); await controller.start(); logger.debug.mockClear(); await MQTT.events.message('dummytopic', 'dummymessage'); - expect(spyTransport).toHaveBeenCalledWith( - {level: 'debug', message: "Received MQTT message on 'dummytopic' with data 'dummymessage'", namespace: LOG_MQTT_NS}, - expect.any(Function), - ); - logger.removeTransport(transport); - logger.setTransportsEnabled(false); + expect(spyEventbusEmitMQTTMessage).toHaveBeenCalledWith({topic: 'dummytopic', message: "dummymessage"}); + expect(logger.callTransports).toHaveBeenCalledWith("debug", "Received MQTT message on 'dummytopic' with data 'dummymessage'", LOG_MQTT_NS); }); it('Skip MQTT messages on topic we published to', async () => { - class DummyTransport extends Transport { - log(info, callback) {} - } - const transport = new DummyTransport(); - logger.setTransportsEnabled(true); - let spyTransport = jest.spyOn(transport, 'log').mockImplementation(); - logger.addTransport(transport); + const eventbus = controller.eventBus; + let spyEventbusEmitMQTTMessage = jest.spyOn(eventbus, 'emitMQTTMessage').mockImplementation(); await controller.start(); logger.debug.mockClear(); await MQTT.events.message('zigbee2mqtt/skip-this-topic', 'skipped'); - expect(spyTransport).toHaveBeenCalledWith( - {level: 'debug', message: "Received MQTT message on 'zigbee2mqtt/skip-this-topic' with data 'skipped'", namespace: LOG_MQTT_NS}, - expect.any(Function), - ); + expect(spyEventbusEmitMQTTMessage).toHaveBeenCalledWith({topic: 'zigbee2mqtt/skip-this-topic', message: "skipped"}); logger.debug.mockClear(); await controller.mqtt.publish('skip-this-topic', '', {}); await MQTT.events.message('zigbee2mqtt/skip-this-topic', 'skipped'); expect(logger.debug).toHaveBeenCalledTimes(0); - logger.removeTransport(transport); - logger.setTransportsEnabled(false); }); it('On zigbee event message', async () => { diff --git a/test/stub/logger.js b/test/stub/logger.js index 127af4be9..e0393a801 100644 --- a/test/stub/logger.js +++ b/test/stub/logger.js @@ -5,21 +5,24 @@ let namespacedLevels = {}; let transports = []; let transportsEnabled = false; -const callTransports = (level, messageOrLambda, namespace) => { - if (transportsEnabled) { - const message = messageOrLambda instanceof Function ? messageOrLambda() : messageOrLambda; - for (const transport of transports) { - transport.log({level, message, namespace}, () => {}); - } - } -}; const mock = { + callTransports:jest.fn().mockImplementation((level, message, namespace) => { + if (transportsEnabled) { + for (const transport of transports) { + transport.log({level, message, namespace}, () => {}); + } + } + }), + log: (level, messageOrLambda, namespace = 'z2m') => { + const message = messageOrLambda instanceof Function ? messageOrLambda() : messageOrLambda; + mock.callTransports(level, message, namespace) + }, init: jest.fn(), - info: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => callTransports('info', messageOrLambda, namespace)), - warning: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => callTransports('warning', messageOrLambda, namespace)), - error: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => callTransports('error', messageOrLambda, namespace)), - debug: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => callTransports('debug', messageOrLambda, namespace)), + info: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => mock.log('info', messageOrLambda, namespace)), + warning: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => mock.log('warning', messageOrLambda, namespace)), + error: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => mock.log('error', messageOrLambda, namespace)), + debug: jest.fn().mockImplementation((messageOrLambda, namespace = 'z2m') => mock.log('debug', messageOrLambda, namespace)), cleanup: jest.fn(), logOutput: jest.fn(), add: (transport) => transports.push(transport),