100 lines
3.1 KiB
TypeScript
100 lines
3.1 KiB
TypeScript
/**
|
|
* Logger Basic Tests
|
|
*
|
|
* Simple tests for the simplified logger functionality.
|
|
*/
|
|
|
|
import { describe, it, expect, beforeEach } from 'bun:test';
|
|
import { Logger, getLogger } from '../src';
|
|
import { loggerTestHelpers } from './setup';
|
|
|
|
describe('Logger Basic Tests', () => {
|
|
let logger: Logger;
|
|
|
|
beforeEach(() => {
|
|
logger = loggerTestHelpers.createTestLogger('basic-test');
|
|
loggerTestHelpers.clearCapturedLogs();
|
|
});
|
|
|
|
describe('Basic Logging', () => {
|
|
it('should create logger instances', () => {
|
|
expect(logger).toBeDefined();
|
|
expect(typeof logger.info).toBe('function');
|
|
expect(typeof logger.error).toBe('function');
|
|
expect(typeof logger.warn).toBe('function');
|
|
expect(typeof logger.debug).toBe('function');
|
|
});
|
|
|
|
it('should log simple messages', () => {
|
|
logger.info('Test message');
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].msg).toBe('Test message');
|
|
expect(logs[0].level).toBe('info');
|
|
});
|
|
|
|
it('should include service name in logs', () => {
|
|
logger.info('Service test');
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].service).toBe('basic-test');
|
|
});
|
|
|
|
it('should handle multiple log levels', () => {
|
|
logger.debug('Debug level');
|
|
logger.info('Info level');
|
|
logger.warn('Warn level');
|
|
logger.error('Error level');
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(4);
|
|
|
|
const levels = logs.map(log => log.level);
|
|
expect(levels).toEqual(['debug', 'info', 'warn', 'error']);
|
|
});
|
|
});
|
|
|
|
describe('Context and Metadata', () => {
|
|
it('should include metadata in logs', () => {
|
|
const metadata = { userId: '123', action: 'test' };
|
|
logger.info('User action', metadata);
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].userId).toBe('123');
|
|
expect(logs[0].action).toBe('test');
|
|
});
|
|
|
|
it('should support child loggers', () => {
|
|
const childLogger = logger.child({ requestId: 'req-456' });
|
|
childLogger.info('Child log message');
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].msg).toBe('Child log message');
|
|
});
|
|
});
|
|
|
|
describe('Error Logging', () => {
|
|
it('should log errors with error metadata', () => {
|
|
const error = new Error('Test error');
|
|
logger.error('Error occurred', { error });
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].level).toBe('error');
|
|
expect(logs[0].msg).toBe('Error occurred');
|
|
});
|
|
|
|
it('should handle error-like objects', () => {
|
|
const errorLike = { name: 'CustomError', message: 'Custom message' };
|
|
logger.error('Custom error', { error: errorLike });
|
|
|
|
const logs = loggerTestHelpers.getCapturedLogs();
|
|
expect(logs.length).toBe(1);
|
|
expect(logs[0].level).toBe('error');
|
|
});
|
|
});
|
|
});
|