@rollercoaster-dev/rd-logger
Version:
A neurodivergent-friendly logger for Rollercoaster.dev projects
56 lines (55 loc) • 2.38 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 express from 'express';
import request from 'supertest';
import { expressLogger } from '../express';
// 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('Express Adapter Integration', () => {
let app;
let consoleSpy;
beforeEach(() => {
jest.clearAllMocks();
consoleSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
app = express();
app.use(expressLogger());
app.get('/test', (_req, res) => {
res.setHeader('x-test-header', 'test');
res.status(200).json({ ok: true });
});
});
afterEach(() => {
consoleSpy.mockRestore();
});
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(app).get('/test');
expect(res.status).toBe(200);
expect(res.headers['x-request-id']).toBeDefined();
expect(res.headers['x-test-header']).toBe('test');
expect(consoleSpy).toHaveBeenCalledTimes(2);
const logs = consoleSpy.mock.calls.map(c => c[0]);
expect(logs[0]).toContain('Incoming request');
expect(logs[1]).toContain('Request completed');
}));
});