import { assertEquals } from 'test-deps'; import { getLogLevel, Logger } from 'infra/logger.ts'; const testLogger = Logger.getInstance('test'); Deno.test('log.debug', async () => { const debugLog = 'this is a debug message'; testLogger.debug(debugLog); const lastLog = testLogger.getLastMessage(); assertEquals(lastLog, `[DEBUG] ${debugLog}`, 'debug log message'); }); Deno.test('log.info', async () => { const infoLog = 'this is a info message'; testLogger.info(infoLog); const lastLog = testLogger.getLastMessage(); assertEquals(lastLog, `[INFO] ${infoLog}`, 'info log message'); }); Deno.test('log.warn', async () => { const warnLog = 'this is a warn message'; testLogger.warn(warnLog); const lastLog = testLogger.getLastMessage(); assertEquals(lastLog, `[WARNING] ${warnLog}`, 'warn log message'); }); Deno.test('log.error', async () => { const errorLog = 'this is a error message'; testLogger.error(errorLog); const lastLog = testLogger.getLastMessage(); assertEquals(lastLog, `[ERROR] ${errorLog}`, 'error log message'); }); Deno.test('getLogLevel with valid level', () => { const level = 'INFO'; assertEquals(getLogLevel(level), level); }); Deno.test('getLogLevel with invalid level', () => { const level = 'INVALID_LEVEL'; assertEquals(getLogLevel(level), 'WARNING'); }); Deno.test('getLogLevel with undefined level', () => { assertEquals(getLogLevel(undefined), 'WARNING'); }); Deno.test('logLevel with DEBUG_LEVEL environment variable set', () => { const originalDebugLevel = Deno.env.get('DEBUG_LEVEL'); Deno.env.set('DEBUG_LEVEL', 'INFO'); assertEquals(getLogLevel(Deno.env.get('DEBUG_LEVEL')), 'INFO'); if (originalDebugLevel) { Deno.env.set('DEBUG_LEVEL', originalDebugLevel); } else { Deno.env.delete('DEBUG_LEVEL'); } }); Deno.test('logLevel with DEBUG_LEVEL environment variable not set', () => { const originalDebugLevel = Deno.env.get('DEBUG_LEVEL'); Deno.env.delete('DEBUG_LEVEL'); assertEquals(getLogLevel(Deno.env.get('DEBUG_LEVEL')), 'WARNING'); if (originalDebugLevel) { Deno.env.set('DEBUG_LEVEL', originalDebugLevel); } });