/**
* Tests for logger utility
*/
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
import { logger } from '../logger.js';
describe('logger', () => {
const originalEnv = process.env;
beforeEach(() => {
process.env = { ...originalEnv };
vi.spyOn(console, 'error').mockImplementation(() => {});
});
afterEach(() => {
process.env = originalEnv;
vi.restoreAllMocks();
});
describe('isEnabled', () => {
it('returns boolean for enabled state', () => {
const enabled = logger.isEnabled();
expect(typeof enabled).toBe('boolean');
});
it('returns current enabled state', () => {
const enabled = logger.isEnabled();
expect(typeof enabled).toBe('boolean');
});
});
describe('getConfig', () => {
it('returns configuration object', () => {
const config = logger.getConfig();
expect(config).toHaveProperty('enabled');
expect(config).toHaveProperty('minLevel');
});
it('has valid minLevel', () => {
const config = logger.getConfig();
expect(['debug', 'info', 'warn', 'error']).toContain(config.minLevel);
});
});
describe('logging methods exist', () => {
it('has debug method', () => {
expect(typeof logger.debug).toBe('function');
});
it('has info method', () => {
expect(typeof logger.info).toBe('function');
});
it('has warn method', () => {
expect(typeof logger.warn).toBe('function');
});
it('has error method', () => {
expect(typeof logger.error).toBe('function');
});
});
describe('logging behavior', () => {
it('debug accepts message and data', () => {
// Should not throw
expect(() => logger.debug('test message', { key: 'value' })).not.toThrow();
});
it('info accepts message and data', () => {
expect(() => logger.info('test message', { key: 'value' })).not.toThrow();
});
it('warn accepts message and data', () => {
expect(() => logger.warn('test message', { key: 'value' })).not.toThrow();
});
it('error accepts message and data', () => {
expect(() => logger.error('test message', { key: 'value' })).not.toThrow();
});
it('accepts message without data', () => {
expect(() => logger.debug('test message')).not.toThrow();
expect(() => logger.info('test message')).not.toThrow();
expect(() => logger.warn('test message')).not.toThrow();
expect(() => logger.error('test message')).not.toThrow();
});
});
});