import { BaseLogger, WrappingLogger } from '../../../src/logging/Logger'; import type { SimpleLogger } from '../../../src/logging/Logger'; describe('Logger', (): void => { describe('a BaseLogger', (): void => { let logger: BaseLogger; beforeEach(async(): Promise => { logger = new (BaseLogger as any)(); logger.log = jest.fn(); }); it('delegates error to log.', async(): Promise => { logger.error('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('error', 'my message'); }); it('warn delegates to log.', async(): Promise => { logger.warn('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('warn', 'my message'); }); it('info delegates to log.', async(): Promise => { logger.info('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('info', 'my message'); }); it('verbose delegates to log.', async(): Promise => { logger.verbose('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('verbose', 'my message'); }); it('debug delegates to log.', async(): Promise => { logger.debug('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('debug', 'my message'); }); it('silly delegates to log.', async(): Promise => { logger.silly('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('silly', 'my message'); }); }); describe('a WrappingLogger', (): void => { let logger: SimpleLogger; let wrapper: WrappingLogger; beforeEach(async(): Promise => { logger = { log: jest.fn() }; wrapper = new WrappingLogger(logger); }); it('error delegates to the internal logger.', async(): Promise => { wrapper.error('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('error', 'my message'); }); it('warn delegates to the internal logger.', async(): Promise => { wrapper.warn('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('warn', 'my message'); }); it('info delegates to the internal logger.', async(): Promise => { wrapper.info('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('info', 'my message'); }); it('verbose delegates to the internal logger.', async(): Promise => { wrapper.verbose('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('verbose', 'my message'); }); it('debug delegates to the internal logger.', async(): Promise => { wrapper.debug('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('debug', 'my message'); }); it('silly delegates to the internal logger.', async(): Promise => { wrapper.silly('my message'); expect(logger.log).toHaveBeenCalledTimes(1); expect(logger.log).toHaveBeenCalledWith('silly', 'my message'); }); }); });