2023-05-31 16:10:53 +08:00

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 ',
]);
});
});