mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-07 09:51:37 +00:00
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
const chai = require('chai')
|
|
const expect = chai.expect
|
|
|
|
const {
|
|
encodeBrowseCursor,
|
|
decodeBrowseCursor
|
|
} = require('../../../server/utils/queries/libraryBrowseCursor')
|
|
|
|
describe('libraryBrowseCursor', () => {
|
|
it('round-trips a deterministic title cursor with id tie-breaker', () => {
|
|
const encoded = encodeBrowseCursor({
|
|
sortBy: 'media.metadata.title',
|
|
desc: false,
|
|
keys: ['titleIgnorePrefix', 'id'],
|
|
values: ['Dune', 'item_42']
|
|
})
|
|
|
|
expect(decodeBrowseCursor(encoded)).to.deep.equal({
|
|
sortBy: 'media.metadata.title',
|
|
desc: false,
|
|
keys: ['titleIgnorePrefix', 'id'],
|
|
values: ['Dune', 'item_42']
|
|
})
|
|
})
|
|
|
|
it('rejects a cursor without the full ordered key set', () => {
|
|
expect(() => decodeBrowseCursor(encodeBrowseCursor({
|
|
sortBy: 'media.metadata.title',
|
|
desc: false,
|
|
keys: ['titleIgnorePrefix', 'id'],
|
|
values: ['Dune']
|
|
}))).to.throw('full ordered key set')
|
|
})
|
|
|
|
it('rejects a cursor without the id tie-breaker', () => {
|
|
expect(() => decodeBrowseCursor(encodeBrowseCursor({
|
|
sortBy: 'media.metadata.title',
|
|
desc: false,
|
|
keys: ['titleIgnorePrefix'],
|
|
values: ['Dune']
|
|
}))).to.throw('tie-breaker')
|
|
})
|
|
})
|