From e96d5552fa21c72d6643d55c7ba4ab1cf8b9c0c8 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 23 Jun 2022 12:35:48 +0800 Subject: [PATCH] Fix search by is:read or is:unread getting empty result by using the correct property name --- packages/api/src/elastic/pages.ts | 8 ++++---- packages/api/src/elastic/types.ts | 2 +- packages/api/test/resolvers/article.test.ts | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 12318ef54..c83b92e74 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -48,8 +48,8 @@ const appendReadFilter = (body: SearchBody, filter: ReadFilter): void => { case ReadFilter.UNREAD: body.query.bool.filter.push({ range: { - readingProgress: { - gte: 98, + readingProgressPercent: { + lt: 98, }, }, }) @@ -57,8 +57,8 @@ const appendReadFilter = (body: SearchBody, filter: ReadFilter): void => { case ReadFilter.READ: body.query.bool.filter.push({ range: { - readingProgress: { - lt: 98, + readingProgressPercent: { + gte: 98, }, }, }) diff --git a/packages/api/src/elastic/types.ts b/packages/api/src/elastic/types.ts index c05bde556..3a89c8da5 100644 --- a/packages/api/src/elastic/types.ts +++ b/packages/api/src/elastic/types.ts @@ -14,7 +14,7 @@ export interface SearchBody { | { exists: { field: string } } | { range: { - readingProgress: { gte: number } | { lt: number } + readingProgressPercent: { gte: number } | { lt: number } } } | { diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index b4a8dc650..fe08eea37 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -1003,5 +1003,22 @@ describe('Article API', () => { expect(res.body.data.search.edges[4].node.id).to.eq(highlights[0].id) }) }) + + context('when is:unread is in the query', () => { + before(() => { + keyword = 'search is:unread' + }) + + it('should return unread articles in descending order', async () => { + const res = await graphqlRequest(query, authToken).expect(200) + + expect(res.body.data.search.edges.length).to.eq(5) + expect(res.body.data.search.edges[0].node.id).to.eq(pages[4].id) + expect(res.body.data.search.edges[1].node.id).to.eq(pages[3].id) + expect(res.body.data.search.edges[2].node.id).to.eq(pages[2].id) + expect(res.body.data.search.edges[3].node.id).to.eq(pages[1].id) + expect(res.body.data.search.edges[4].node.id).to.eq(pages[0].id) + }) + }) }) })