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

46 lines
1.9 KiB
JavaScript
Raw Normal View History

import { describe, expect, it } from 'vitest'
import {
buildTrainingUnitSavePayload,
createEmptyTrainingUnitFormData,
validateTrainingUnitFormForSave,
} from './trainingUnitEditorCore.js'
describe('trainingUnitEditorCore', () => {
it('createEmptyTrainingUnitFormData defaults', () => {
const fd = createEmptyTrainingUnitFormData({ groupId: '2', plannedDate: '2026-05-01' })
expect(fd.group_id).toBe('2')
expect(fd.planned_date).toBe('2026-05-01')
expect(fd.sections).toHaveLength(1)
expect(fd.sections[0].title).toBe('Hauptteil')
})
it('validateTrainingUnitFormForSave', () => {
expect(validateTrainingUnitFormForSave({ group_id: '', planned_date: '' }).ok).toBe(false)
expect(validateTrainingUnitFormForSave({ group_id: '1', planned_date: '2026-01-01' }).ok).toBe(true)
})
it('buildTrainingUnitSavePayload create includes group and template', () => {
const formData = createEmptyTrainingUnitFormData({ groupId: '5', plannedDate: '2026-05-10' })
const payload = buildTrainingUnitSavePayload(formData, { draftPlanTemplateId: '9' })
expect(payload.group_id).toBe(5)
expect(payload.plan_template_id).toBe(9)
expect(payload.planned_date).toBe('2026-05-10')
expect(payload.sections).toBeDefined()
})
it('buildTrainingUnitSavePayload update sets debrief and clears lead when empty', () => {
const formData = {
...createEmptyTrainingUnitFormData({ groupId: '5', plannedDate: '2026-05-10' }),
status: 'completed',
debrief_completed: true,
lead_trainer_profile_id: '',
session_assistants_inherit: true,
}
const payload = buildTrainingUnitSavePayload(formData, { editingUnit: { id: 1 } })
expect(payload.debrief_completed).toBe(true)
expect(payload.lead_trainer_profile_id).toBeNull()
expect(payload.assistant_trainer_profile_ids).toBeNull()
expect(payload.group_id).toBeUndefined()
})
})