import { municipalDataMongodbClient } from "../mongodb-client"; import { MongoClient } from "mongodb"; describe("MunicipalDataMongoDBClient Validation", () => { const originalEnv = process.env; beforeEach(() => { process.env = { ...originalEnv }; delete process.env.MONGO_URI; delete process.env.MONGODB_URI; // Force reset singleton state (municipalDataMongodbClient as any).client = null; (municipalDataMongodbClient as any).db = null; }); afterAll(async () => { process.env = originalEnv; await municipalDataMongodbClient.disconnect(); }); it("should succeed with default database name if only URI is provided", async () => { const mockDb = { databaseName: "municipal-data" }; const connectSpy = jest .spyOn(MongoClient.prototype, "connect") .mockResolvedValue({} as any); const dbSpy = jest .spyOn(MongoClient.prototype, "db") .mockReturnValue(mockDb as any); const validUri = "mongodb://127.0.0.1:27017"; await municipalDataMongodbClient.connect(validUri); expect(municipalDataMongodbClient.getDb()).toBeDefined(); expect(municipalDataMongodbClient.getDb().databaseName).toBe( "municipal-data", ); connectSpy.mockRestore(); dbSpy.mockRestore(); }); it("should allow overriding the default database name", async () => { const mockDb = { databaseName: "custom-municipal-db" }; const connectSpy = jest .spyOn(MongoClient.prototype, "connect") .mockResolvedValue({} as any); const dbSpy = jest .spyOn(MongoClient.prototype, "db") .mockReturnValue(mockDb as any); const validUri = "mongodb://127.0.0.1:27017"; await municipalDataMongodbClient.connect(validUri, "custom-municipal-db"); expect(municipalDataMongodbClient.getDb().databaseName).toBe( "custom-municipal-db", ); connectSpy.mockRestore(); dbSpy.mockRestore(); }); });