shinkan-jinkendo/frontend/src/utils/frameworkProgramListHelpers.test.js

39 lines
1.4 KiB
JavaScript
Raw Normal View History

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)
})
})