import { randomUUID } from 'node:crypto'; import { DefaultUserService } from './default-user.service'; describe('DefaultUserService', () => { it('upserts the bootstrap default owner with stable ownership metadata', async () => { const defaultUser = { id: randomUUID(), slug: DefaultUserService.defaultOwnerSlug, displayName: DefaultUserService.defaultOwnerDisplayName, isDefault: true, createdAt: new Date(), updatedAt: new Date(), }; const prismaService = { user: { upsert: jest.fn().mockResolvedValue(defaultUser), }, } as any; const service = new DefaultUserService(prismaService); await expect(service.getOrCreateDefaultUser()).resolves.toEqual(defaultUser); expect(prismaService.user.upsert).toHaveBeenCalledWith({ where: { slug: DefaultUserService.defaultOwnerSlug, }, update: { displayName: DefaultUserService.defaultOwnerDisplayName, isDefault: true, }, create: { slug: DefaultUserService.defaultOwnerSlug, displayName: DefaultUserService.defaultOwnerDisplayName, isDefault: true, }, }); }); it('creates the bootstrap default owner during application startup', async () => { const service = new DefaultUserService({ user: { upsert: jest.fn(), }, } as any); const getOrCreateDefaultUserSpy = jest .spyOn(service, 'getOrCreateDefaultUser') .mockResolvedValue({ id: randomUUID(), slug: DefaultUserService.defaultOwnerSlug, displayName: DefaultUserService.defaultOwnerDisplayName, isDefault: true, createdAt: new Date(), updatedAt: new Date(), }); await service.onApplicationBootstrap(); expect(getOrCreateDefaultUserSpy).toHaveBeenCalledTimes(1); }); });