feat(reports): parseOperationalFilters pure parser (Area scope)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-02 10:08:16 +02:00
parent 93e96da43b
commit 3d9084c94b
2 changed files with 56 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import { describe, expect, it } from 'vitest';
import { parseOperationalFilters } from '@/lib/services/reports/operational-filters';
function params(qs: string): URLSearchParams {
return new URLSearchParams(qs);
}
describe('parseOperationalFilters', () => {
it('returns undefined when no area param is present', () => {
expect(parseOperationalFilters(params(''))).toBeUndefined();
expect(parseOperationalFilters(params('from=x&to=y'))).toBeUndefined();
});
it('parses a single area', () => {
expect(parseOperationalFilters(params('area=A'))).toEqual({ areas: ['A'] });
});
it('parses a CSV of areas and trims whitespace', () => {
expect(parseOperationalFilters(params('area=A,%20B%20,C'))).toEqual({
areas: ['A', 'B', 'C'],
});
});
it('drops empty / whitespace-only entries, returning undefined when nothing is left', () => {
expect(parseOperationalFilters(params('area=%20,%20'))).toBeUndefined();
expect(parseOperationalFilters(params('area='))).toBeUndefined();
});
});