fix: Unable to delete archived and templated documents (#1749)

closes #1746
This commit is contained in:
Tom Moor
2020-12-24 13:28:08 -08:00
committed by GitHub
parent ea57cef89c
commit ac1120914a
2 changed files with 30 additions and 4 deletions

View File

@@ -650,8 +650,10 @@ Document.prototype.delete = function (userId: string) {
async (transaction: Transaction): Promise<Document> => {
if (!this.archivedAt && !this.template) {
// delete any children and remove from the document structure
const collection = await this.getCollection();
const collection = await this.getCollection({ transaction });
if (collection) await collection.deleteDocument(this, { transaction });
} else {
await this.destroy({ transaction });
}
await Revision.destroy({
@@ -659,10 +661,13 @@ Document.prototype.delete = function (userId: string) {
transaction,
});
this.lastModifiedById = userId;
this.deletedAt = new Date();
await this.update(
{ lastModifiedById: userId },
{
transaction,
}
);
await this.save({ transaction });
return this;
}
);

View File

@@ -279,4 +279,25 @@ describe("#delete", () => {
expect(document.lastModifiedById).toBe(user.id);
expect(document.deletedAt).toBeTruthy();
});
test("should soft delete templates", async () => {
let document = await buildDocument({ template: true });
let user = await buildUser();
await document.delete(user.id);
document = await Document.findByPk(document.id, { paranoid: false });
expect(document.lastModifiedById).toBe(user.id);
expect(document.deletedAt).toBeTruthy();
});
test("should soft delete archived", async () => {
let document = await buildDocument({ archivedAt: new Date() });
let user = await buildUser();
await document.delete(user.id);
document = await Document.findByPk(document.id, { paranoid: false });
expect(document.lastModifiedById).toBe(user.id);
expect(document.deletedAt).toBeTruthy();
});
});