import { describe, it, expect, vi, beforeEach } from 'vitest'; import Fastify from 'fastify'; // Mock mongoose and awilix before importing the plugin vi.mock('mongoose', () => ({ default: { connect: vi.fn().mockResolvedValue(undefined), disconnect: vi.fn().mockResolvedValue(undefined), }, })); vi.mock('@fastify/awilix', () => ({ diContainer: { register: vi.fn(), }, })); import mongoosePlugin from './mongoose.plugin.js'; import mongoose from 'mongoose'; import { diContainer } from '@fastify/awilix'; describe('mongoose.plugin', () => { beforeEach(() => { vi.clearAllMocks(); }); it('connects to MongoDB on registration', async () => { const app = Fastify({ logger: false }); await app.register(mongoosePlugin); await app.ready(); expect(mongoose.connect).toHaveBeenCalled(); expect(diContainer.register).toHaveBeenCalled(); await app.close(); }); it('disconnects from MongoDB on close', async () => { const app = Fastify({ logger: false }); await app.register(mongoosePlugin); await app.ready(); await app.close(); expect(mongoose.disconnect).toHaveBeenCalled(); }); });