Deleting a collection should detach associated drafts from it (#5082)
Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
@@ -2928,6 +2928,35 @@ describe("#documents.delete", () => {
|
||||
expect(deletedDoc?.deletedAt).toBeTruthy();
|
||||
});
|
||||
|
||||
it("should delete a draft under deleted collection", async () => {
|
||||
const user = await buildUser();
|
||||
const collection = await buildCollection({
|
||||
createdById: user.id,
|
||||
teamId: user.teamId,
|
||||
deletedAt: new Date(),
|
||||
});
|
||||
const document = await buildDocument({
|
||||
createdById: user.id,
|
||||
teamId: user.teamId,
|
||||
collectionId: collection.id,
|
||||
publishedAt: null,
|
||||
});
|
||||
|
||||
const res = await server.post("/api/documents.delete", {
|
||||
body: {
|
||||
token: user.getJwtToken(),
|
||||
id: document.id,
|
||||
},
|
||||
});
|
||||
|
||||
expect(res.status).toBe(200);
|
||||
const deletedDoc = await Document.findByPk(document.id, {
|
||||
paranoid: false,
|
||||
});
|
||||
expect(deletedDoc).not.toBe(null);
|
||||
expect(deletedDoc?.deletedAt).not.toBe(null);
|
||||
});
|
||||
|
||||
it("should allow permanently deleting a document", async () => {
|
||||
const user = await buildUser();
|
||||
const document = await buildDocument({
|
||||
|
||||
@@ -582,9 +582,11 @@ router.post(
|
||||
document.collectionId = collectionId;
|
||||
}
|
||||
|
||||
const collection = await Collection.scope({
|
||||
method: ["withMembership", user.id],
|
||||
}).findByPk(document.collectionId);
|
||||
const collection = document.collectionId
|
||||
? await Collection.scope({
|
||||
method: ["withMembership", user.id],
|
||||
}).findByPk(document.collectionId)
|
||||
: undefined;
|
||||
|
||||
// if the collectionId was provided in the request and isn't valid then it will
|
||||
// be caught as a 403 on the authorize call below. Otherwise we're checking here
|
||||
@@ -938,6 +940,10 @@ router.post(
|
||||
ip: ctx.request.ip,
|
||||
});
|
||||
|
||||
if (!document.collectionId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return await Collection.scope({
|
||||
method: ["withMembership", user.id],
|
||||
}).findByPk(document.collectionId, { transaction });
|
||||
|
||||
Reference in New Issue
Block a user