import { jest } from '@jest/globals'; import { getLogger } from '../../src/logger'; describe('getLogger', () => { it('getLogger caches results', () => { let a1 = getLogger('a'); let b = getLogger('b'); let a2 = getLogger('a'); expect(a1).not.toBe(b); expect(a1).toBe(a2); }); it('logger.info prints to console.info', () => { console.info = jest.fn(); const logger = getLogger('prefix1'); logger.info('hello world'); expect(console.info).toHaveBeenCalledWith('[prefix1] hello world'); }); it('logger.info handles multiple args', () => { console.info = jest.fn(); const logger = getLogger('prefix2'); logger.info('hello', 'world', 1, 2, 3); expect(console.info).toHaveBeenCalledWith('[prefix2] hello', 'world', 1, 2, 3); }); it('logger.{debug,warn,error} also works', () => { console.info = jest.fn(); console.debug = jest.fn(); console.warn = jest.fn(); console.error = jest.fn(); const logger = getLogger('prefix3'); logger.debug('this is a debug'); logger.warn('this is a warning'); logger.error('this is an error'); expect(console.info).not.toHaveBeenCalled(); expect(console.debug).toHaveBeenCalledWith('[prefix3] this is a debug'); expect(console.warn).toHaveBeenCalledWith('[prefix3] this is a warning'); expect(console.error).toHaveBeenCalledWith('[prefix3] this is an error'); }); });