mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fix article_id type mismatch (uuid => varchar) when saving highlights in postgres by setting article_id to be undefined (#285)
This commit is contained in:
parent
4ca7c89622
commit
bee3b3c6fa
2 changed files with 69 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue