38 أسطر
1.1 KiB
TypeScript
38 أسطر
1.1 KiB
TypeScript
import { buildPaginatedResponse } from './pagination.util';
|
|
|
|
describe('pagination util', () => {
|
|
it('builds offset pagination metadata', () => {
|
|
const result = buildPaginatedResponse(['a', 'b'], {
|
|
page: 2,
|
|
limit: 2,
|
|
total: 5,
|
|
offset: 2,
|
|
});
|
|
|
|
expect(result.count).toBe(2);
|
|
expect(result.totalPages).toBe(3);
|
|
expect(result.pagination.hasNextPage).toBe(true);
|
|
expect(result.pagination.hasPreviousPage).toBe(true);
|
|
expect(result.pagination.nextPage).toBe(3);
|
|
expect(result.pagination.previousPage).toBe(1);
|
|
expect(result.pagination.mode).toBe('offset');
|
|
});
|
|
|
|
it('builds cursor pagination metadata', () => {
|
|
const result = buildPaginatedResponse(['a'], {
|
|
page: 1,
|
|
limit: 2,
|
|
total: 3,
|
|
offset: 0,
|
|
currentCursor: 'cursor-a',
|
|
nextCursor: 'cursor-b',
|
|
mode: 'cursor',
|
|
});
|
|
|
|
expect(result.nextCursor).toBe('cursor-b');
|
|
expect(result.pagination.currentCursor).toBe('cursor-a');
|
|
expect(result.pagination.nextCursor).toBe('cursor-b');
|
|
expect(result.pagination.mode).toBe('cursor');
|
|
});
|
|
});
|