Files
bmp-website-2026/tests/int/jury-members.int.spec.ts
2026-07-31 14:25:11 +02:00

43 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { selectJuryDocs, sortJuryMembersQuoteFirst } from '@/spa/juryMembers'
describe('Netzwerk jury members', () => {
const docs = [
{ id: 1, name: 'First' },
{ id: 2, name: 'Second' },
{ id: 3, name: 'Third' },
]
it('uses the CMS relationship selection when it is present', () => {
expect(selectJuryDocs([3, { id: 1 }], docs).map((member) => member.id)).toEqual([3, 1])
expect(selectJuryDocs([], docs)).toEqual([])
expect(selectJuryDocs(undefined, docs)).toEqual(docs)
expect(selectJuryDocs(undefined, [])).toEqual([])
})
it('omits an unpublished selected member publicly and restores it in preview order', () => {
const selection = [{ id: 3 }, { id: 2, name: 'Stale embedded member' }, { id: 1 }]
const publicDocs = [docs[0], docs[2]]
expect(selectJuryDocs(selection, publicDocs).map((member) => member.id)).toEqual([3, 1])
expect(selectJuryDocs(selection, docs).map((member) => member.id)).toEqual([3, 2, 1])
})
it('places non-empty quotes first and preserves sort order within each group', () => {
const members = [
{ name: 'Unquoted early', quote: '', sortOrder: 1 },
{ name: 'Quoted later', quote: 'Quote', sortOrder: 20 },
{ name: 'Quoted earlier', quote: ' Another quote ', sortOrder: 10 },
{ name: 'Unquoted later', quote: ' ', sortOrder: 30 },
]
expect(sortJuryMembersQuoteFirst(members).map((member) => member.name)).toEqual([
'Quoted earlier',
'Quoted later',
'Unquoted early',
'Unquoted later',
])
})
})