import { sortViolations, filterViolations } from '../public/logic.js';
describe('Frontend Data Logic', () => {
const mockViolations = [
{ id: 'v1', impact: 'serious' },
{ id: 'v2', impact: 'minor' },
{ id: 'v3', impact: 'critical' },
{ id: 'v4', impact: 'moderate' },
];
describe('filterViolations', () => {
it('should return all violations if "all" is selected', () => {
const filtered = filterViolations(mockViolations, ['all']);
expect(filtered).toHaveLength(4);
});
it('should filter by a single criticality', () => {
const filtered = filterViolations(mockViolations, ['critical']);
expect(filtered).toHaveLength(1);
expect(filtered[0].id).toBe('v3');
});
it('should filter by multiple criticalities', () => {
const filtered = filterViolations(mockViolations, ['minor', 'serious']);
expect(filtered).toHaveLength(2);
expect(filtered.map((v: any) => v.id)).toEqual(expect.arrayContaining(['v1', 'v2']));
});
});
describe('sortViolations', () => {
it('should sort by impact in ascending order', () => {
const sorted = sortViolations(mockViolations, { column: 'impact', direction: 'asc' });
const impacts = sorted.map((v: any) => v.impact);
expect(impacts).toEqual(['minor', 'moderate', 'serious', 'critical']);
});
it('should sort by impact in descending order', () => {
const sorted = sortViolations(mockViolations, { column: 'impact', direction: 'desc' });
const impacts = sorted.map((v: any) => v.impact);
expect(impacts).toEqual(['critical', 'serious', 'moderate', 'minor']);
});
});
});