From c41e6e0423c171ef72a5391813eef0dba2f39f6b Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Fri, 24 Apr 2020 05:29:48 -0700 Subject: [PATCH] fix: Minor fixes in backlinks service (#1240) --- server/services/backlinks.js | 21 ++++++++++++++------- server/services/backlinks.test.js | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/server/services/backlinks.js b/server/services/backlinks.js index 7e7b65bb2..5acf7ca6c 100644 --- a/server/services/backlinks.js +++ b/server/services/backlinks.js @@ -72,17 +72,24 @@ export default class Backlinks { // delete any backlinks that were removed await Promise.all( removedLinkIds.map(async linkId => { - const document = await Document.findByPk(linkId); - await Backlink.destroy({ - where: { - documentId: document.id, - reverseDocumentId: event.documentId, - }, + const document = await Document.findByPk(linkId, { + paranoid: false, }); + if (document) { + await Backlink.destroy({ + where: { + documentId: document.id, + reverseDocumentId: event.documentId, + }, + }); + } }) ); - if (currentRevision.title === previousRevision.title) { + if ( + !previousRevision || + currentRevision.title === previousRevision.title + ) { break; } diff --git a/server/services/backlinks.test.js b/server/services/backlinks.test.js index adef6e5c4..a2520aab4 100644 --- a/server/services/backlinks.test.js +++ b/server/services/backlinks.test.js @@ -10,6 +10,28 @@ beforeEach(flushdb); beforeEach(jest.resetAllMocks); describe('documents.update', () => { + test('should not fail on a document with no previous revisions', async () => { + const otherDocument = await buildDocument(); + const document = await buildDocument({ + text: `[this is a link](${otherDocument.url})`, + }); + + await Backlinks.on({ + name: 'documents.update', + documentId: document.id, + collectionId: document.collectionId, + teamId: document.teamId, + actorId: document.createdById, + data: { autosave: false }, + }); + + const backlinks = await Backlink.findAll({ + where: { reverseDocumentId: document.id }, + }); + + expect(backlinks.length).toBe(1); + }); + test('should create new backlink records', async () => { const otherDocument = await buildDocument(); const document = await buildDocument();