import { describe, expect, it } from 'vitest' import { collectDistinctSessionDurationsMinutes, filterFrameworkPrograms, hasActiveFrameworkImportFilters, splitFrameworkCommaAgg, splitFrameworkGoalsAgg, } from './frameworkProgramListHelpers.js' describe('frameworkProgramListHelpers', () => { const rows = [ { id: 1, title: 'A', session_duration_min: 60, session_duration_max: 60, focus_area_ids: [1] }, { id: 2, title: 'B', session_duration_min: 90, session_duration_max: 120, focus_area_ids: [2] }, { id: 3, title: 'C', session_duration_min: null, session_duration_max: null }, ] it('collectDistinctSessionDurationsMinutes', () => { expect(collectDistinctSessionDurationsMinutes(rows)).toEqual([60, 90, 120]) }) it('filterFrameworkPrograms duration preset', () => { const out = filterFrameworkPrograms(rows, { durationMode: 'preset', durationPresetMin: 90 }) expect(out.map((r) => r.id)).toEqual([2]) }) it('filterFrameworkPrograms duration range overlap', () => { const out = filterFrameworkPrograms(rows, { durationMode: 'range', durationRangeFrom: '75', durationRangeTo: '100', }) expect(out.map((r) => r.id)).toEqual([2]) }) it('hasActiveFrameworkImportFilters', () => { expect(hasActiveFrameworkImportFilters({})).toBe(false) expect(hasActiveFrameworkImportFilters({ query: 'x' })).toBe(true) expect(hasActiveFrameworkImportFilters({ durationMode: 'preset', durationPresetMin: 60 })).toBe(true) }) it('splitFrameworkCommaAgg and splitFrameworkGoalsAgg', () => { expect(splitFrameworkCommaAgg('Technik, Kondition')).toEqual(['Technik', 'Kondition']) expect(splitFrameworkCommaAgg('')).toEqual([]) expect(splitFrameworkGoalsAgg('Gürtel | Koordination')).toEqual(['Gürtel', 'Koordination']) }) })