import { beforeEach, describe, expect, it, vi } from 'vitest'; import { TenantService } from './tenant.service'; /** * TenantService.create — Standardgruppen-Anlage (D-06/D-13, quick-260805-fok). * * TenantService.create ist neben AdminSeedService.seedAdmin der zweite * Mandanten-Entstehungspfad. Diese Tests decken ausschließlich die neue * ensureDefaultGroup-Anbindung ab, mit gemocktem PrismaService und * gemocktem GroupsService — im Stil von user.service.spec.ts. */ describe('TenantService.create — Standardgruppen-Anlage (D-06/D-13)', () => { let prisma: any; let groupsService: any; let service: TenantService; const createdTenant = { id: 't1', name: 'Acme', slug: 'acme' }; const baseData = { name: 'Acme', slug: 'acme' }; beforeEach(() => { vi.clearAllMocks(); prisma = { tenant: { create: vi.fn().mockResolvedValue(createdTenant), }, }; groupsService = { ensureDefaultGroup: vi.fn().mockResolvedValue({ id: 'g1' }), }; service = new TenantService(prisma, groupsService); }); it('ruft nach der Mandanten-Anlage genau einmal ensureDefaultGroup mit der id des neu angelegten Mandanten auf; der Rueckgabewert bleibt der Mandant', async () => { const result = await service.create(baseData); expect(result).toEqual(createdTenant); expect(groupsService.ensureDefaultGroup).toHaveBeenCalledTimes(1); expect(groupsService.ensureDefaultGroup).toHaveBeenCalledWith('t1'); }); it('gibt den Mandanten trotz werfendem ensureDefaultGroup zurueck — der Fehler wird protokolliert, nicht propagiert', async () => { groupsService.ensureDefaultGroup.mockRejectedValue(new Error('boom')); await expect(service.create(baseData)).resolves.toEqual(createdTenant); expect(prisma.tenant.create).toHaveBeenCalledTimes(1); }); });