checkpoint ISAC registries and system monitoring
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { getPagination, getRegistrySort } from './pagination.js';
|
||||
|
||||
const options = {
|
||||
name: { asc: 'name ASC', desc: 'name DESC' },
|
||||
updated: { asc: 'updated_at ASC', desc: 'updated_at DESC', defaultDirection: 'desc' as const }
|
||||
};
|
||||
|
||||
describe('getRegistrySort', () => {
|
||||
it('returns only allowlisted sort expressions', () => {
|
||||
const url = new URL('https://shd.build/isac/attributes?sort=name&direction=desc');
|
||||
expect(getRegistrySort(url, options, 'name')).toEqual({
|
||||
key: 'name',
|
||||
direction: 'desc',
|
||||
orderBy: 'name DESC'
|
||||
});
|
||||
});
|
||||
|
||||
it('falls back for unknown keys and directions', () => {
|
||||
const url = new URL('https://shd.build/isac/attributes?sort=DROP%20TABLE&direction=sideways');
|
||||
expect(getRegistrySort(url, options, 'updated')).toEqual({
|
||||
key: 'updated',
|
||||
direction: 'desc',
|
||||
orderBy: 'updated_at DESC'
|
||||
});
|
||||
});
|
||||
|
||||
it('supports namespaced registry parameters', () => {
|
||||
const url = new URL('https://shd.build/isac/users/1?loginSort=name&loginDirection=asc');
|
||||
expect(getRegistrySort(url, options, 'updated', 'desc', 'login')).toMatchObject({
|
||||
key: 'name',
|
||||
direction: 'asc'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getPagination', () => {
|
||||
it('keeps supported row counts and clamps the selected page', () => {
|
||||
const url = new URL('https://shd.build/isac/attributes?perPage=50&page=9');
|
||||
expect(getPagination(url, 75)).toMatchObject({ perPage: 50, page: 2, pageCount: 2 });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user