@rollercoaster-dev/rd-logger
Version:
A neurodivergent-friendly logger for Rollercoaster.dev projects
55 lines (54 loc) • 2.36 kB
JavaScript
/// <reference types="jest" />
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { Hono } from 'hono';
import { serve } from '@hono/node-server';
import request from 'supertest';
import { honoLogger } from '../hono';
// Mock chalk to disable color codes in tests for easier string matching
jest.mock('chalk', () => {
const chalkMock = {
gray: (msg) => msg,
whiteBright: (msg) => msg,
blue: (msg) => msg,
green: (msg) => msg,
yellow: (msg) => msg,
red: (msg) => msg,
magenta: (msg) => msg,
dim: (msg) => msg,
cyan: (msg) => msg,
};
return Object.assign({ __esModule: true, default: chalkMock }, chalkMock);
});
describe('Hono Adapter Integration', () => {
let server;
let consoleSpy;
beforeEach(() => {
jest.clearAllMocks();
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
const app = new Hono();
app.use('*', honoLogger());
app.get('/test', (c) => c.json({ ok: true }, 200));
server = serve({ fetch: app.fetch, port: 0 });
});
afterEach(() => {
consoleSpy.mockRestore();
server.close();
});
it('should set x-request-id header and log incoming and outgoing requests', () => __awaiter(void 0, void 0, void 0, function* () {
const res = yield request(server).get('/test');
expect(res.status).toBe(200);
expect(res.headers['x-request-id']).toBeDefined();
expect(consoleSpy).toHaveBeenCalledTimes(2);
const [inLog, outLog] = consoleSpy.mock.calls.map(c => c[0]);
expect(inLog).toContain('Incoming request');
expect(outLog).toContain('Request completed');
}));
});