Deleting a collection should detach associated drafts from it (#5082)

Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
Apoorv Mishra
2023-04-24 00:50:44 +05:30
committed by GitHub
parent 7250c0ed64
commit 86062f396d
39 changed files with 363 additions and 112 deletions

View File

@@ -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({

View File

@@ -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 });