UNPKG

ursamu-mud

Version:

Ursamu - Modular MUD Engine with sandboxed scripting and plugin system

94 lines 2.99 kB
/** * Jest setup and utilities for testing */ import { promises as fs } from 'fs'; // Custom matchers for hot-reload testing expect.extend({ toBeValidReloadResult(received) { const pass = received && typeof received.success === 'boolean' && Array.isArray(received.errors) && Array.isArray(received.warnings); if (pass) { return { message: () => `expected ${received} not to be a valid reload result`, pass: true, }; } else { return { message: () => `expected ${received} to be a valid reload result with success, errors, and warnings properties`, pass: false, }; } }, toHaveReloadErrors(received) { const pass = received && Array.isArray(received.errors) && received.errors.length > 0; if (pass) { return { message: () => `expected reload result not to have errors`, pass: true, }; } else { return { message: () => `expected reload result to have errors`, pass: false, }; } }, async toCompleteWithinTime(received, timeLimit) { const startTime = Date.now(); try { await received; const duration = Date.now() - startTime; const pass = duration <= timeLimit; if (pass) { return { message: () => `expected operation not to complete within ${timeLimit}ms (completed in ${duration}ms)`, pass: true, }; } else { return { message: () => `expected operation to complete within ${timeLimit}ms but took ${duration}ms`, pass: false, }; } } catch (error) { return { message: () => `expected operation to complete but it failed: ${error}`, pass: false, }; } } }); // Global test utilities global.testUtils = { createTempFile: async (dir, filename, content) => { const filePath = require('path').join(dir, filename); await fs.writeFile(filePath, content, 'utf-8'); return filePath; }, waitFor: (ms) => { return new Promise(resolve => setTimeout(resolve, ms)); }, createMockReloadEvent: (type, data = {}) => ({ type, timestamp: Date.now(), data, source: 'TestSource' }) }; // Increase default test timeout for integration tests jest.setTimeout(30000); // Suppress console output during tests unless CI or verbose mode if (!process.env.CI && !process.env.VERBOSE_TESTS) { console.log = jest.fn(); console.warn = jest.fn(); console.error = jest.fn(); } //# sourceMappingURL=jest.setup.js.map