diff --git a/packages/api/src/resolvers/highlight/index.ts b/packages/api/src/resolvers/highlight/index.ts index 9aad461b3..69163de53 100644 --- a/packages/api/src/resolvers/highlight/index.ts +++ b/packages/api/src/resolvers/highlight/index.ts @@ -131,6 +131,7 @@ export const mergeHighlightResolver = authorized< await models.highlight.deleteMany(overlapHighlightIdList, tx) return await models.highlight.create({ ...newHighlightInput, + articleId: undefined, annotation: mergedAnnotation ? mergedAnnotation.join('\n') : null, userId: claims.uid, elasticPageId: newHighlightInput.articleId, diff --git a/packages/api/test/resolvers/highlight.test.ts b/packages/api/test/resolvers/highlight.test.ts index b919a19fb..e72f635fe 100644 --- a/packages/api/test/resolvers/highlight.test.ts +++ b/packages/api/test/resolvers/highlight.test.ts @@ -52,6 +52,43 @@ const createHighlightQuery = ( ` } +const mergeHighlightQuery = ( + pageId: string, + highlightId: string, + shortHighlightId: string, + overlapHighlightIdList: string[], + prefix = '_prefix', + suffix = '_suffix', + quote = '_quote', + patch = '_patch' +) => { + return ` + mutation { + mergeHighlight( + input: { + prefix: "${prefix}", + suffix: "${suffix}", + quote: "${quote}", + id: "${highlightId}", + shortId: "${shortHighlightId}", + patch: "${patch}", + articleId: "${pageId}", + overlapHighlightIdList: "${overlapHighlightIdList}" + } + ) { + ... on MergeHighlightSuccess { + highlight { + id + } + } + ... on MergeHighlightError { + errorCodes + } + } + } + ` +} + describe('Highlights API', () => { const username = 'fakeUser' let authToken: string @@ -93,4 +130,35 @@ describe('Highlights API', () => { expect(res.body.data.createHighlight.highlight.id).to.eq(highlightId) }) }) + + context('mergeHighlightMutation', () => { + let highlightId: string + + before(async () => { + // create test highlight + highlightId = generateFakeUuid() + const shortHighlightId = '_short_id' + const query = createHighlightQuery( + authToken, + pageId, + highlightId, + shortHighlightId + ) + await graphqlRequest(query, authToken).expect(200) + }) + + it('should not fail', async () => { + const newHighlightId = generateFakeUuid() + const newShortHighlightId = '_short_id_1' + const query = mergeHighlightQuery( + pageId, + newHighlightId, + newShortHighlightId, + [highlightId] + ) + const res = await graphqlRequest(query, authToken).expect(200) + + expect(res.body.data.mergeHighlight.highlight.id).to.eq(newHighlightId) + }) + }) })