39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
|
|
import { describe, expect, it } from 'vitest'
|
||
|
|
import {
|
||
|
|
collectDistinctSessionDurationsMinutes,
|
||
|
|
filterFrameworkPrograms,
|
||
|
|
hasActiveFrameworkImportFilters,
|
||
|
|
} 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)
|
||
|
|
})
|
||
|
|
})
|