mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 20:03:37 +00:00
Resolves merge conflicts: - apps/server/src/routes/terminal/common.ts: Keep randomBytes import, use @automaker/utils for createLogger - apps/ui/eslint.config.mjs: Use main's explicit globals list with XMLHttpRequest and MediaQueryListEvent additions - apps/ui/src/components/views/terminal-view.tsx: Keep our terminal improvements (killAllSessions, beforeunload, better error handling) - apps/ui/src/config/terminal-themes.ts: Keep our search highlight colors for all themes - apps/ui/src/store/app-store.ts: Keep our terminal settings persistence improvements (merge function) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
110 lines
3.4 KiB
TypeScript
110 lines
3.4 KiB
TypeScript
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
import { LogLevel, createLogger, getLogLevel, setLogLevel } from '@automaker/utils';
|
|
|
|
describe('logger.ts', () => {
|
|
let consoleSpy: {
|
|
log: ReturnType<typeof vi.spyOn>;
|
|
warn: ReturnType<typeof vi.spyOn>;
|
|
error: ReturnType<typeof vi.spyOn>;
|
|
};
|
|
let originalLogLevel: LogLevel;
|
|
|
|
beforeEach(() => {
|
|
originalLogLevel = getLogLevel();
|
|
consoleSpy = {
|
|
log: vi.spyOn(console, 'log').mockImplementation(() => {}),
|
|
warn: vi.spyOn(console, 'warn').mockImplementation(() => {}),
|
|
error: vi.spyOn(console, 'error').mockImplementation(() => {}),
|
|
};
|
|
});
|
|
|
|
afterEach(() => {
|
|
setLogLevel(originalLogLevel);
|
|
consoleSpy.log.mockRestore();
|
|
consoleSpy.warn.mockRestore();
|
|
consoleSpy.error.mockRestore();
|
|
});
|
|
|
|
describe('LogLevel enum', () => {
|
|
it('should have correct numeric values', () => {
|
|
expect(LogLevel.ERROR).toBe(0);
|
|
expect(LogLevel.WARN).toBe(1);
|
|
expect(LogLevel.INFO).toBe(2);
|
|
expect(LogLevel.DEBUG).toBe(3);
|
|
});
|
|
});
|
|
|
|
describe('setLogLevel and getLogLevel', () => {
|
|
it('should set and get log level', () => {
|
|
setLogLevel(LogLevel.DEBUG);
|
|
expect(getLogLevel()).toBe(LogLevel.DEBUG);
|
|
|
|
setLogLevel(LogLevel.ERROR);
|
|
expect(getLogLevel()).toBe(LogLevel.ERROR);
|
|
});
|
|
});
|
|
|
|
describe('createLogger', () => {
|
|
it('should create a logger with context prefix', () => {
|
|
setLogLevel(LogLevel.INFO);
|
|
const logger = createLogger('TestContext');
|
|
|
|
logger.info('test message');
|
|
|
|
expect(consoleSpy.log).toHaveBeenCalledWith('[TestContext]', 'test message');
|
|
});
|
|
|
|
it('should log error at all log levels', () => {
|
|
const logger = createLogger('Test');
|
|
|
|
setLogLevel(LogLevel.ERROR);
|
|
logger.error('error message');
|
|
expect(consoleSpy.error).toHaveBeenCalledWith('[Test]', 'error message');
|
|
});
|
|
|
|
it('should log warn when level is WARN or higher', () => {
|
|
const logger = createLogger('Test');
|
|
|
|
setLogLevel(LogLevel.ERROR);
|
|
logger.warn('warn message 1');
|
|
expect(consoleSpy.warn).not.toHaveBeenCalled();
|
|
|
|
setLogLevel(LogLevel.WARN);
|
|
logger.warn('warn message 2');
|
|
expect(consoleSpy.warn).toHaveBeenCalledWith('[Test]', 'warn message 2');
|
|
});
|
|
|
|
it('should log info when level is INFO or higher', () => {
|
|
const logger = createLogger('Test');
|
|
|
|
setLogLevel(LogLevel.WARN);
|
|
logger.info('info message 1');
|
|
expect(consoleSpy.log).not.toHaveBeenCalled();
|
|
|
|
setLogLevel(LogLevel.INFO);
|
|
logger.info('info message 2');
|
|
expect(consoleSpy.log).toHaveBeenCalledWith('[Test]', 'info message 2');
|
|
});
|
|
|
|
it('should log debug only when level is DEBUG', () => {
|
|
const logger = createLogger('Test');
|
|
|
|
setLogLevel(LogLevel.INFO);
|
|
logger.debug('debug message 1');
|
|
expect(consoleSpy.log).not.toHaveBeenCalled();
|
|
|
|
setLogLevel(LogLevel.DEBUG);
|
|
logger.debug('debug message 2');
|
|
expect(consoleSpy.log).toHaveBeenCalledWith('[Test]', '[DEBUG]', 'debug message 2');
|
|
});
|
|
|
|
it('should pass multiple arguments to log functions', () => {
|
|
setLogLevel(LogLevel.DEBUG);
|
|
const logger = createLogger('Multi');
|
|
|
|
logger.info('message', { data: 'value' }, 123);
|
|
expect(consoleSpy.log).toHaveBeenCalledWith('[Multi]', 'message', { data: 'value' }, 123);
|
|
});
|
|
});
|
|
});
|