Files
discord-ollama/tests/logger.test.ts
T
2026-10-21 19:09:28 -07:00

46 lines
1.4 KiB
TypeScript

import { Writable } from 'node:stream'
import pino from 'pino'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createLogger } from '../src/components/logger.js'
describe('Pino logger', () => {
let output = ''
const destination = new Writable({
write(chunk, _encoding, callback) {
output += chunk.toString()
callback()
}
})
const parentLogger = pino({ level: 'trace' }, destination)
beforeEach(() => {
vi.stubEnv('NODE_ENV', 'test')
})
afterEach(() => {
vi.unstubAllEnvs()
})
it('creates a child logger with component and caller metadata', () => {
output = ''
const logger = createLogger({ component: 'test' }, parentLogger)
logger.info('bound message')
const entry = JSON.parse(output)
expect(entry.msg).toBe('bound message')
expect(entry.component).toBe('test')
expect(entry.caller).toMatch(/logger\.test\.ts:\d+:\d+/)
})
it('supports native Pino levels and structured log fields', () => {
output = ''
const logger = createLogger({ component: 'test' }, parentLogger)
logger.warn({ answer: 42 }, 'warning')
const entry = JSON.parse(output)
expect(entry.level).toBe(40)
expect(entry.answer).toBe(42)
expect(entry.msg).toBe('warning')
})
})