Files
d-logger/test/helpers/logger-test-helpers.js
IanKulin 9546dd3ab3 initial
2025-09-25 20:50:13 +08:00

81 lines
1.7 KiB
JavaScript

// Shared test utilities for logger tests
// Mock console.log to capture output
let capturedLogs = [];
let capturedErrors = [];
const originalConsoleLog = console.log;
const originalConsoleError = console.error;
const originalIsTTY = Deno.stdout.isTerminal();
export function mockConsole() {
console.log = (...args) => {
capturedLogs.push(args.join(' '));
};
}
export function mockConsoleError() {
console.error = (...args) => {
capturedErrors.push(args);
};
}
export function restoreConsole() {
console.log = originalConsoleLog;
capturedLogs = [];
}
export function restoreConsoleError() {
console.error = originalConsoleError;
capturedErrors = [];
}
export function getCapturedLogs() {
return capturedLogs;
}
export function getCapturedErrors() {
return capturedErrors;
}
export function clearCapturedLogs() {
capturedLogs = [];
}
export function clearCapturedErrors() {
capturedErrors = [];
}
let mockIsTTY = originalIsTTY;
export function setTTYMode(isTTY) {
mockIsTTY = isTTY;
// Mock Deno.stdout.isTerminal for testing
Deno.stdout.isTerminal = () => mockIsTTY;
}
export function restoreTTY() {
mockIsTTY = originalIsTTY;
// Restore original Deno.stdout.isTerminal
Deno.stdout.isTerminal = () => originalIsTTY;
}
// Helper to setup both console mocks
export function setupMocks() {
mockConsole();
mockConsoleError();
}
// Helper to restore both console mocks
export function restoreMocks() {
restoreConsole();
restoreConsoleError();
}
// Helper to get parsed JSON from first captured log
export function getFirstLogAsJSON() {
if (capturedLogs.length === 0) {
throw new Error('No logs captured');
}
return JSON.parse(capturedLogs[0]);
}