feat: articles pagination
This commit is contained in:
1 parent
a2d224240c
commit
73f4b539fe
45 files changed
+3528
-317
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { pageItems, pageCountFor, rangeFor } from '@/lib/pagination'
|
||||
|
||||
describe('pageItems', () => {
|
||||
it('lists every page when there are seven or fewer', () => {
|
||||
expect(pageItems(3, 7)).toEqual([1, 2, 3, 4, 5, 6, 7])
|
||||
expect(pageItems(1, 1)).toEqual([1])
|
||||
})
|
||||
|
||||
it('marks the skipped range after the first page', () => {
|
||||
expect(pageItems(1, 13)).toEqual([1, 2, 'gap', 13])
|
||||
})
|
||||
|
||||
it('marks skipped ranges on both sides of a middle page', () => {
|
||||
expect(pageItems(7, 13)).toEqual([1, 'gap', 6, 7, 8, 'gap', 13])
|
||||
})
|
||||
|
||||
it('marks the skipped range before the last page', () => {
|
||||
expect(pageItems(13, 13)).toEqual([1, 'gap', 12, 13])
|
||||
})
|
||||
|
||||
it('does not mark a gap between adjacent pages', () => {
|
||||
expect(pageItems(3, 13)).toEqual([1, 2, 3, 4, 'gap', 13])
|
||||
})
|
||||
})
|
||||
|
||||
describe('pageCountFor', () => {
|
||||
it('rounds up and never drops below one', () => {
|
||||
expect(pageCountFor(312, 25)).toBe(13)
|
||||
expect(pageCountFor(6, 25)).toBe(1)
|
||||
expect(pageCountFor(0, 25)).toBe(1)
|
||||
})
|
||||
})
|
||||
|
||||
describe('rangeFor', () => {
|
||||
it('computes the shown range', () => {
|
||||
expect(rangeFor(1, 25, 312)).toEqual({ from: 1, to: 25 })
|
||||
expect(rangeFor(7, 25, 312)).toEqual({ from: 151, to: 175 })
|
||||
expect(rangeFor(13, 25, 312)).toEqual({ from: 301, to: 312 })
|
||||
expect(rangeFor(1, 25, 0)).toEqual({ from: 0, to: 0 })
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user