| import { vi, afterAll } from "vitest"; |
| import dotenv from "dotenv"; |
| import { resolve } from "path"; |
| import fs from "fs"; |
| import { MongoMemoryServer } from "mongodb-memory-server"; |
|
|
| let mongoServer: MongoMemoryServer; |
| |
| const envPath = resolve(__dirname, "../.env"); |
| dotenv.config({ path: envPath }); |
|
|
| |
| const envContent = fs.readFileSync(envPath, "utf-8"); |
|
|
| |
| const envVars = dotenv.parse(envContent); |
|
|
| |
| const publicEnv = {}; |
| const privateEnv = {}; |
|
|
| for (const [key, value] of Object.entries(envVars)) { |
| if (key.startsWith("PUBLIC_")) { |
| publicEnv[key] = value; |
| } else { |
| privateEnv[key] = value; |
| } |
| } |
|
|
| vi.mock("$env/dynamic/public", () => ({ |
| env: publicEnv, |
| })); |
|
|
| vi.mock("$env/dynamic/private", async () => { |
| mongoServer = await MongoMemoryServer.create(); |
|
|
| return { |
| env: { |
| ...privateEnv, |
| MONGODB_URL: mongoServer.getUri(), |
| }, |
| }; |
| }); |
|
|
| afterAll(async () => { |
| if (mongoServer) { |
| await mongoServer.stop(); |
| } |
| }); |
|
|