Merge pull request #3233 from omnivore-app/fix/sort-by-score

ignore sort:score since we always order by score when doing fulltext search
This commit is contained in:
Hongbo Wu 2023-12-11 12:24:14 +08:00 committed by GitHub
commit d7a2a926d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View file

@ -323,6 +323,11 @@ export const buildQuery = (
}
const [sort, sortOrder] = value.split('-')
if (sort.toLowerCase() === 'score') {
// score is not a column and is handled separately
return null
}
const order =
sortOrder?.toUpperCase() === 'ASC'
? SortOrder.ASCENDING

View file

@ -1812,6 +1812,51 @@ describe('Article API', () => {
expect(res.body.data.search.edges[1].node.id).to.eq(items[0].id)
})
})
context('when sort:score is in the query', () => {
let items: LibraryItem[] = []
before(async () => {
keyword = 'sort:score score'
// Create some test items
items = await createLibraryItems(
[
{
user,
title: 'score',
slug: 'test 1',
originalUrl: `${url}/test1`,
},
{
user,
title: 'score score',
slug: 'test 2',
originalUrl: `${url}/test2`,
},
{
user,
title: 'score score score',
slug: 'test 3',
originalUrl: `${url}/test3`,
},
],
user.id
)
})
after(async () => {
await deleteLibraryItems(items, user.id)
})
it('returns items in descending order of score', async () => {
const res = await graphqlRequest(query, authToken).expect(200)
expect(res.body.data.search.pageInfo.totalCount).to.eql(3)
expect(res.body.data.search.edges[0].node.id).to.eq(items[2].id)
expect(res.body.data.search.edges[1].node.id).to.eq(items[1].id)
expect(res.body.data.search.edges[2].node.id).to.eq(items[0].id)
})
})
})
describe('TypeaheadSearch API', () => {