fix: fehlende Dateien fuer Etiketten-Elemente-Umbau nachreichen
Backend Image / build-and-push (push) Successful in 2m19s
Frontend Image / build-and-push (push) Successful in 1m55s

git add -u im letzten Commit hat neue (untracked) Dateien übersprungen:
die Migration für LabelTemplate.elements, die neuen Typ-/DTO-Dateien und
den kompletten Drag-and-Drop-Editor fehlten dadurch im Build.
This commit is contained in:
Nick Szaunig committed 2026-09-01 16:59:48 +02:00
1 parent 5f4e1a7ba9
commit 938239e16e
9 files changed
+1134

No files matched your search

@@ -0,0 +1,78 @@
import { PermissionCatalogSyncService } from './permission-catalog-sync.service';
import { PrismaService } from '../../prisma/prisma.service';
import { PERMISSION_CATALOG } from './permission-catalog';
describe('PermissionCatalogSyncService', () => {
let service: PermissionCatalogSyncService;
let prisma: {
permission: { findMany: jest.Mock; create: jest.Mock };
role: { findMany: jest.Mock };
rolePermission: { createMany: jest.Mock };
};
beforeEach(() => {
prisma = {
permission: {
findMany: jest.fn(),
create: jest.fn((args: { data: { key: string } }) =>
Promise.resolve({ id: `perm-${args.data.key}`, ...args.data }),
),
},
role: { findMany: jest.fn().mockResolvedValue([]) },
rolePermission: { createMany: jest.fn().mockResolvedValue({ count: 0 }) },
};
service = new PermissionCatalogSyncService(
prisma as unknown as PrismaService,
);
});
it('does nothing when every catalog permission already exists', async () => {
prisma.permission.findMany.mockResolvedValue(
PERMISSION_CATALOG.map((entry) => ({ key: entry.key })),
);
await service.onModuleInit();
expect(prisma.permission.create).not.toHaveBeenCalled();
expect(prisma.role.findMany).not.toHaveBeenCalled();
expect(prisma.rolePermission.createMany).not.toHaveBeenCalled();
});
it('inserts missing catalog permissions and grants them to every system role', async () => {
const [first, ...rest] = PERMISSION_CATALOG;
prisma.permission.findMany.mockResolvedValue(
rest.map((entry) => ({ key: entry.key })),
);
prisma.role.findMany.mockResolvedValue([
{ id: 'role-admin' },
{ id: 'role-owner' },
]);
await service.onModuleInit();
expect(prisma.permission.create).toHaveBeenCalledWith({ data: first });
expect(prisma.role.findMany).toHaveBeenCalledWith({
where: { isSystem: true },
select: { id: true },
});
expect(prisma.rolePermission.createMany).toHaveBeenCalledWith({
data: [
{ roleId: 'role-admin', permissionId: `perm-${first.key}` },
{ roleId: 'role-owner', permissionId: `perm-${first.key}` },
],
skipDuplicates: true,
});
});
it('skips the role grant step when no system role exists', async () => {
prisma.permission.findMany.mockResolvedValue([]);
prisma.role.findMany.mockResolvedValue([]);
await service.onModuleInit();
expect(prisma.permission.create).toHaveBeenCalledTimes(
PERMISSION_CATALOG.length,
);
expect(prisma.rolePermission.createMany).not.toHaveBeenCalled();
});
});