forked from EduCraft/curriculum-project-hub
feat: add paginated project discovery
This commit is contained in:
@@ -284,4 +284,59 @@ describe("admin explorer API", () => {
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
it("rejects moving a folder below one of its descendants", async () => {
|
||||
const parent = await prisma.folder.create({
|
||||
data: { id: "folder-cycle-parent", organizationId: DEFAULT_ORG_ID, name: "Parent" },
|
||||
});
|
||||
const child = await prisma.folder.create({
|
||||
data: { id: "folder-cycle-child", organizationId: DEFAULT_ORG_ID, parentId: parent.id, name: "Child" },
|
||||
});
|
||||
|
||||
await expect(renameFolder(prisma, {
|
||||
organizationId: DEFAULT_ORG_ID,
|
||||
folderId: parent.id,
|
||||
parentId: child.id,
|
||||
})).rejects.toThrow("folder cannot be moved below its descendant");
|
||||
});
|
||||
|
||||
it("keeps the system Inbox identity immutable", async () => {
|
||||
const inbox = await prisma.folder.findFirstOrThrow({
|
||||
where: { organizationId: DEFAULT_ORG_ID, kind: "SYSTEM_INBOX" },
|
||||
});
|
||||
|
||||
await expect(renameFolder(prisma, {
|
||||
organizationId: DEFAULT_ORG_ID,
|
||||
folderId: inbox.id,
|
||||
name: "课程",
|
||||
})).rejects.toThrow("system Inbox cannot be renamed or moved");
|
||||
await expect(renameFolder(prisma, {
|
||||
organizationId: DEFAULT_ORG_ID,
|
||||
folderId: inbox.id,
|
||||
parentId: null,
|
||||
})).rejects.toThrow("system Inbox cannot be renamed or moved");
|
||||
await expect(archiveFolder(prisma, {
|
||||
organizationId: DEFAULT_ORG_ID,
|
||||
folderId: inbox.id,
|
||||
})).rejects.toThrow("system Inbox cannot be archived");
|
||||
|
||||
await expect(prisma.folder.update({
|
||||
where: { id: inbox.id },
|
||||
data: { kind: "REGULAR" },
|
||||
})).rejects.toThrow("system Inbox identity cannot be changed");
|
||||
await expect(prisma.folder.update({
|
||||
where: { id: inbox.id },
|
||||
data: { id: `${inbox.id}-moved` },
|
||||
})).rejects.toThrow("system Inbox identity cannot be changed");
|
||||
await expect(prisma.folder.delete({ where: { id: inbox.id } }))
|
||||
.rejects.toThrow("system Inbox cannot be deleted while its organization exists");
|
||||
await expect(prisma.folder.create({
|
||||
data: {
|
||||
organizationId: DEFAULT_ORG_ID,
|
||||
name: "Malformed",
|
||||
kind: "SYSTEM_INBOX",
|
||||
parentId: inbox.id,
|
||||
},
|
||||
})).rejects.toThrow("system Inbox must be an active root folder named Inbox");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user