import { PrismaService } from '../../src/shared/prisma.service'; import { PrismaServiceAccountRepository } from '../../src/modules/identity/infrastructure/repositories/prisma-service-account.repository'; import { ServiceAccount } from '../../src/modules/identity/domain/entities/service-account.entity'; describe('PrismaServiceAccountRepository', () => { it('maps prisma model to domain entity for findByClientId', async () => { const fakeModel = { id: 'id-1', client_id: 'cid', client_secret_hash: 'hash', name: 'Bot', role: 'BOT', permissions: ['DEBT_READ'], status: 'ACTIVE', metadata: { hello: 'world' }, }; const mockPrisma: Partial = { serviceAccount: { findUnique: jest.fn().mockResolvedValue(fakeModel), } as any, }; const repo = new PrismaServiceAccountRepository(mockPrisma as any); const sa = await repo.findByClientId('cid'); expect(sa).not.toBeNull(); expect(sa!.clientId).toBe('cid'); expect(sa!.name).toBe('Bot'); expect(sa!.role).toBe('BOT'); expect(sa!.permissions).toEqual(fakeModel.permissions); expect(sa!.metadata).toEqual(fakeModel.metadata); }); });