mongoms.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { MongoMemoryServer } from 'mongodb-memory-server-core';
  2. import mongoose from 'mongoose';
  3. import { mongoOptions } from '~/server/util/mongoose-utils';
  4. let mongoServer: MongoMemoryServer | undefined;
  5. beforeAll(async () => {
  6. // Use external MongoDB if MONGO_URI is provided (e.g., in CI with GitHub Actions services)
  7. if (process.env.MONGO_URI) {
  8. // biome-ignore lint/suspicious/noConsole: Allow logging
  9. console.log(`Using external MongoDB at ${process.env.MONGO_URI}`);
  10. await mongoose.connect(process.env.MONGO_URI, mongoOptions);
  11. return;
  12. }
  13. // Use MongoMemoryServer for local development
  14. // set debug flag
  15. process.env.MONGOMS_DEBUG = process.env.VITE_MONGOMS_DEBUG;
  16. // set version
  17. mongoServer = await MongoMemoryServer.create({
  18. instance: {
  19. dbName: 'growi_test',
  20. },
  21. binary: {
  22. version: process.env.VITE_MONGOMS_VERSION,
  23. downloadDir: 'node_modules/.cache/mongodb-binaries',
  24. },
  25. });
  26. // biome-ignore lint/suspicious/noConsole: Allow logging
  27. console.log(`MongoMemoryServer is running on ${mongoServer.getUri()}`);
  28. await mongoose.connect(mongoServer.getUri(), mongoOptions);
  29. });
  30. afterAll(async () => {
  31. await mongoose.disconnect();
  32. // Stop MongoMemoryServer if it was created
  33. if (mongoServer) {
  34. await mongoServer.stop();
  35. }
  36. });