64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
// test/util/logger.test.ts
|
|
|
|
import { expect } from 'chai';
|
|
import { describe, it } from 'mocha';
|
|
import { logger, LogChannel } from '../../src/util/logger';
|
|
|
|
class MockLogChannel implements LogChannel {
|
|
logs: string[] = [];
|
|
|
|
info(message: string, ...args: any[]): void {
|
|
this.logs.push(`[INFO] ${message} ${args.join(' ')}`);
|
|
}
|
|
|
|
warn(message: string, ...args: any[]): void {
|
|
this.logs.push(`[WARN] ${message} ${args.join(' ')}`);
|
|
}
|
|
|
|
error(message: string | Error, ...args: any[]): void {
|
|
this.logs.push(`[ERROR] ${message} ${args.join(' ')}`);
|
|
}
|
|
|
|
debug(message: string, ...args: any[]): void {
|
|
this.logs.push(`[DEBUG] ${message} ${args.join(' ')}`);
|
|
}
|
|
|
|
show(): void {
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
describe('logger', () => {
|
|
it('should initialize the logger and create a channel', () => {
|
|
// Arrange
|
|
const mockChannel = new MockLogChannel();
|
|
|
|
// Act
|
|
logger.init(mockChannel);
|
|
|
|
// Assert
|
|
const channel = logger.channel();
|
|
expect(channel).to.not.be.undefined;
|
|
expect(channel).to.equal(mockChannel);
|
|
});
|
|
|
|
it('should log messages using the initialized channel', () => {
|
|
// Arrange
|
|
const mockChannel = new MockLogChannel();
|
|
logger.init(mockChannel);
|
|
|
|
// Act
|
|
logger.channel()?.info('Test info message');
|
|
logger.channel()?.warn('Test warn message');
|
|
logger.channel()?.error('Test error message');
|
|
logger.channel()?.debug('Test debug message');
|
|
|
|
// Assert
|
|
expect(mockChannel.logs).to.deep.equal([
|
|
'[INFO] Test info message ',
|
|
'[WARN] Test warn message ',
|
|
'[ERROR] Test error message ',
|
|
'[DEBUG] Test debug message ',
|
|
]);
|
|
});
|
|
}); |