import { ANSI, LogLevel, PrettyJsonConsoleLogger } from '../lib/index'; describe('trace/log/pretty_json_console (PrettyJsonConsoleLogger)', () => { test('logs to console.log for non-error', () => { const log = jest.spyOn(console, 'log').mockImplementation(() => undefined); const err = jest.spyOn(console, 'error').mockImplementation(() => undefined); const logger = new PrettyJsonConsoleLogger(); logger.log(LogLevel.INFO, 'hello'); expect(log).toHaveBeenCalledTimes(1); expect(err).not.toHaveBeenCalled(); const payload = log.mock.calls[0][0] as string; expect(payload).toContain('"level": "INFO"'); expect(payload).toContain('"trace":'); expect(payload).toContain(ANSI.RESET); log.mockRestore(); err.mockRestore(); }); test('logs to console.error for ERROR', () => { const log = jest.spyOn(console, 'log').mockImplementation(() => undefined); const err = jest.spyOn(console, 'error').mockImplementation(() => undefined); const logger = new PrettyJsonConsoleLogger(); logger.log(LogLevel.ERROR, 'boom'); expect(err).toHaveBeenCalledTimes(1); expect(log).not.toHaveBeenCalled(); const payload = err.mock.calls[0][0] as string; expect(payload.startsWith(ANSI.BRIGHT_RED)).toBe(true); expect(payload.endsWith(`${ANSI.RESET}\n`)).toBe(true); log.mockRestore(); err.mockRestore(); }); });