const { MongoMemoryServer } = require('mongodb-memory-server'); const mongoose = require('mongoose'); let mongoServer; // Setup before all tests beforeAll(async () => { // Create in-memory MongoDB instance mongoServer = await MongoMemoryServer.create(); const mongoUri = mongoServer.getUri(); // Set test environment variables process.env.JWT_SECRET = 'test-jwt-secret'; process.env.NODE_ENV = 'test'; // Connect to in-memory database await mongoose.connect(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true, }); }); // Cleanup after each test afterEach(async () => { const collections = mongoose.connection.collections; for (const key in collections) { await collections[key].deleteMany({}); } }); // Cleanup after all tests afterAll(async () => { await mongoose.connection.dropDatabase(); await mongoose.connection.close(); await mongoServer.stop(); }); // Suppress console logs during tests unless there's an error global.console = { ...console, log: jest.fn(), debug: jest.fn(), info: jest.fn(), warn: jest.fn(), error: console.error, // Keep error logging };