Files
logger/tests/ConsoleAppender.test.ts

79 lines
3.1 KiB
TypeScript

import { describe, it, expect, vi, beforeEach, afterEach } from 'bun:test';
import ConsoleAppender from '../src/appenders/ConsoleAppender';
import { LoggingLevel } from '../src/level/LoggingLevel';
describe('ConsoleAppender', () => {
let consoleAppender: ConsoleAppender;
let mockConsoleLog: any;
let mockConsoleError: any;
beforeEach(() => {
consoleAppender = new ConsoleAppender();
// Mock console methods
mockConsoleLog = vi.spyOn(console, 'log').mockImplementation(() => {});
mockConsoleError = vi.spyOn(console, 'error').mockImplementation(() => {});
});
afterEach(() => {
mockConsoleLog.mockRestore();
mockConsoleError.mockRestore();
});
it('should log info messages to console.log', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Info', 'test-category', 'info message');
expect(mockConsoleLog).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Info] [test-category] info message');
expect(mockConsoleError).not.toHaveBeenCalled();
});
it('should log debug messages to console.log', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Debug', 'test-category', 'debug message');
expect(mockConsoleLog).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Debug] [test-category] debug message');
expect(mockConsoleError).not.toHaveBeenCalled();
});
it('should log trace messages to console.log', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Trace', 'test-category', 'trace message');
expect(mockConsoleLog).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Trace] [test-category] trace message');
expect(mockConsoleError).not.toHaveBeenCalled();
});
it('should log silly messages to console.log', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Silly', 'test-category', 'silly message');
expect(mockConsoleLog).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Silly] [test-category] silly message');
expect(mockConsoleError).not.toHaveBeenCalled();
});
it('should log warn messages to console.error', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Warn', 'test-category', 'warn message');
expect(mockConsoleError).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Warn] [test-category] warn message');
expect(mockConsoleLog).not.toHaveBeenCalled();
});
it('should log error messages to console.error', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Error', 'test-category', 'error message');
expect(mockConsoleError).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [Error] [test-category] error message');
expect(mockConsoleLog).not.toHaveBeenCalled();
});
it('should log all messages to console.log', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'All', 'test-category', 'all message');
expect(mockConsoleLog).toHaveBeenCalledWith('2023-01-01T00:00:00.000Z [All] [test-category] all message');
expect(mockConsoleError).not.toHaveBeenCalled();
});
it('should not log off messages', () => {
consoleAppender.log('2023-01-01T00:00:00.000Z', 'Off', 'test-category', 'off message');
expect(mockConsoleLog).not.toHaveBeenCalled();
expect(mockConsoleError).not.toHaveBeenCalled();
});
});