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) }) 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', ]) }) })