import { beforeEach, describe, expect, it, vi } from 'vitest' // ---------- Prisma mockeado ---------- const prismaMock = vi.hoisted(() => ({ notaApartado: { create: vi.fn(), findMany: vi.fn(), }, })) vi.mock('./prisma.js', () => ({ prisma: prismaMock })) import { crearNota, listarNotas } from './nota-apartado.service.js' beforeEach(() => { vi.clearAllMocks() }) describe('crearNota', () => { it('crea una nota con los datos correctos', async () => { const notaFake = { id: 'nota-1', apartadoId: 'apt-1', usuarioId: 'u1', contenido: 'Hola', createdAt: new Date() } prismaMock.notaApartado.create.mockResolvedValue(notaFake) const resultado = await crearNota('apt-1', 'u1', 'Hola') expect(prismaMock.notaApartado.create).toHaveBeenCalledWith({ data: { apartadoId: 'apt-1', usuarioId: 'u1', contenido: 'Hola' }, }) expect(resultado).toEqual(notaFake) }) }) describe('listarNotas', () => { it('retorna notas ordenadas por createdAt desc', async () => { const notasFake = [ { id: 'nota-2', apartadoId: 'apt-1', usuarioId: 'u1', contenido: 'B', createdAt: new Date('2026-09-02') }, { id: 'nota-1', apartadoId: 'apt-1', usuarioId: 'u1', contenido: 'A', createdAt: new Date('2026-09-01') }, ] prismaMock.notaApartado.findMany.mockResolvedValue(notasFake) const resultado = await listarNotas('apt-1') expect(prismaMock.notaApartado.findMany).toHaveBeenCalledWith({ where: { apartadoId: 'apt-1' }, orderBy: { createdAt: 'desc' }, }) expect(resultado).toEqual(notasFake) }) it('retorna array vacĂ­o si no hay notas', async () => { prismaMock.notaApartado.findMany.mockResolvedValue([]) const resultado = await listarNotas('apt-inexistente') expect(resultado).toEqual([]) }) })